调代码
查看原帖
调代码
1323541
han1219楼主2024/6/30 15:34
#include<iostream>
#include<queue>
#include<iomanip>
using namespace std;
int x1,y1,m,n,vis[1001][1001],o;
struct f{
	int x,y,ans;
};
void bfs(int ii,int jj){
	for(int i=1;i<=1000;i++){
		for(int j=1;j<=1000;j++){
			vis[i][j]=0;
		}
	}
	f a;
	a.x=x1,a.y=y1,a.ans=0;
	int zx[]={2,1,-2,-1,2,1,-2,-1,2,-2,2,-2};
	int zy[]={1,2,-1,-2,-1,-2,1,2,-2,-2,2,2};
	queue<f>q;
	q.push(a);
	while(q.size()){
		if(q.front().x==ii&&q.front().y==jj){
			cout<<left<<setw(5)<<q.front().ans;
			o=1;
			return;
		}
		a=q.front();
		q.pop();
		for(int i=0;i<12;i++){
			if(a.x+zx[i]>0&&a.y+zy[i]>0&&a.x+zx[i]<=n&&a.y+zy[i]<=m&&vis[a.x+zx[i]][a.y+zy[i]]!=1){
				f u;
				u.x=a.x+zx[i];
				u.y=a.y+zy[i];
				u.ans=a.ans+1;
				q.push(u);
				vis[a.x+zx[i]][a.y+zy[i]]=1;
			}
		}
	}
}
int main(){
	cin>>n>>m>>x1>>y1;
	for(int j=1;j<=n;j++){
		for(int k=1;k<=m;k++){
			bfs(j,k);
			if(o==0){
				cout<<left<<setw(5)<<-1; 
			} 
			o=0;
		}	
		cout<<endl;
	}
	return 0;
}

没有过样例,有人能帮我调一下吗?

2024/6/30 15:34
加载中...