题目链接:https://www.lanqiao.cn/problems/1022/learning/
题目描述:
用深度优先搜索遍历所有路径,记录从每个点出发的能放完16个的方案。
代码如下:#includeusing namespace std; int bk[17][17]; int f[4][2]= {{0,1},{0,-1},{1,0},{-1,0}}; int ans=0; void dfs(int x,int y,int n){ if(n>=16){ ans++; return ; } for(int i=0;i<4;i++){ int x1=x+f[i][0]; int y1=y+f[i][1]; if(x1>0&&y1>0&&x1<=4&&y1<=4&&bk[x1][y1]==0){ bk[x1][y1]=1; dfs(x1,y1,n+1); bk[x1][y1]=0; } } } int main() { int i,j; for(i=1;i<=4;i++){ for(j=1;j<=4;j++){ bk[i][j]=1; dfs(i,j,1); bk[i][j]=0; } } cout< 答案为 552



