從4,4點開始搜,每走一步中心對稱的那個也標記走過,直到走到邊界,最後結果除以4
#include<iostream> #include<cstdio> #include<cstring> int ans[10][10]; int Count=0; void dfs(int x,int y){ ans[x][y]=1;//標記已走 ans[8-x][8-y]=1; if(x==7||y==7||x==1||y==1)Count++;//到了邊界就+1 else//不是邊界繼續搜 { if(ans[x+1][y]==0)dfs(x+1,y); if(ans[x-1][y]==0)dfs(x-1,y); if(ans[x][y+1]==0)dfs(x,y+1); if(ans[x][y-1]==0)dfs(x,y-1); } ans[x][y]=0;//回溯置零 ans[8-x][8-y]=0; } int main() { memset(ans,0,sizeof(ans)); dfs(4,4); printf("%d",Count/4); return 0; }