我用深搜和广搜都试了,但是都是答案错误我不李姐至少对几组阿。。。。。。
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,tail,head;
int qi[500][500],pd[500][500],que[500000][6];
int heng[8]={1,1,2,2,-1,-1,-2,-2};
int zong[8]={2,-2,1,-1,2,-2,1,-1};
void search(int a,int b,int bu){
for(int i=0;i<8;i++){
if(qi[a+heng[i]][b+zong[i]]==-1&&a+heng[i]>0&&b+zong[i]>0&&a+heng[i]<=n&&b+zong[i]<=m){
que[tail][0]=a+heng[i]; que[tail][1]=b+zong[i]; que[tail++][2]=bu+1;
qi[a+heng[i]][b+zong[i]]=bu+1;
}
}
return;
}//BFS
//void search(int a,int b,int bu){
// for(int i=0;i<=7;i++){
// if(a+heng[i]>0&&b+zong[i]>0&&a+heng[i]<=n&&b+zong[i]<=m&&(qi[a+heng[i]][b+zong[i]]==-1||qi[a+heng[i]][b+zong[i]]>bu+1)){
// qi[a+heng[i]][b+zong[i]]=bu+1;
// search(a+heng[i],b+zong[i],bu+1);
// }
// }
// return;
//}//DFS
int main(){
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) qi[i][j]=-1;
qi[x][y]=0;
head=1; tail=2;
que[1][0]=x; que[1][1]=y; que[1][2]=0;
while(head!=tail){
search(que[head][0],que[head][1],que[head][2]);
head++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<qi[i][j]<<" ";
}
cout<<endl;
}
return 0;
}