藍橋杯-方格分割

藍橋杯-方格分割

解題思路:以中心點座標爲起始點深度優先搜索,沿四個方向走,每走一步,將以中心點對稱的座標標記爲已訪問,由於旋轉對稱的屬於同一種方法,所以最終的結果要除以4.ios


#include<iostream>
using namespace std;
int ans;
int next[4][2]={0,-1,-1,0,0,1,1,0};
int a[7][7],vst[7][7];
void dfs(int x,int y)
{
    int tx,ty; 
    if(x == 0 || x == 6 || y == 0 || y== 6 )
    {
        ans++;
        return ; 
    }
    vst[x][y] = 1;
    vst[6-x][6-y] = 1;
    for(int i=0;i<4;i++)
    {
     tx = x + next[i][0];
     ty = y + next[i][1];
    if(tx < 0 || tx > 6 || ty <0 || ty >6)
    continue;
    if(!vst[tx][ty])
    dfs(tx,ty); 
    }
    vst[x][y] = 0;
    vst[6-x][6-y] = 0;
}
int main()
{
    dfs(3,3);
    cout<<ans/4<<endl;
    return 0;
}
相關文章
相關標籤/搜索