答案对的,样例和第一组数据都没问题,但是全wa,不理解了
查看原帖
答案对的,样例和第一组数据都没问题,但是全wa,不理解了
529466
0717lhlh楼主2021/11/16 14:56

我用深搜和广搜都试了,但是都是答案错误我不李姐至少对几组阿。。。。。。

#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;
} 
2021/11/16 14:56
加载中...