运用深搜,完成惊天大任务
细节毁一切
深搜靠本事
#include <bits/stdc++.h>
using namespace std;
int dx[8]={1,2,2,1,-1,-2,-2,-1};//注意等于号的存在
int dy[8]={-2,-1,1,2,2,1,-1,-2};
int a[100][100];
bool b[100][100];
int print()
{
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
cout<<a[i][j]<<" ";
cout << endl;
}//注意括号的位置
}
void search(int i,int j,int n){
for(int z=0;z<8;z++)
{
if(n>25){ print(); return;}//返回上一层
int x,y;
x=i+dx[z]; y=j+dy[z];//注意设新的变量,不能用原来的i,j
if(x>=1 && x<=5&& y>=1
&& y<=5 &&a[x][y]==0 && b[x][y]==0 )//注意条件写全
{
a[x][y]=n;
b[x][y]=1;//继续搜索的时候不能返回
search(x,y,n+1);
a[x][y]=0;
b[x][y]=0;//搜索完,再回去
}
}
}
int main(int argc, char** argv) {
memset(a, 0, sizeof(a) );
memset(b, 0, sizeof(b) );
a[1][1]=1;
b[1][1]=1;
search(1,1,2);
return 0;
}