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