数据过水
查看原帖
数据过水
1250410
zhaocs123456楼主2025/6/29 16:50

错误代码(90pts)

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
queue<int> x_,y_,z_;
bool vis[405][405];
int n,m,x,y,a[405][405],p[9][2]={{0,0},{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
void bfs(int X,int Y,int ans){
	//	cout<<X<<' '<<Y<<' '<<ans<<endl;
	x_.pop();y_.pop();z_.pop();
	for(int i=1;i<=8;i++){
		//		cout<<X+p[i][0]<<' '<<Y+p[i][1]<<endl;
		if(X+p[i][0]<=n && X+p[i][0]>=1 && Y+p[i][1]<=m && Y+p[i][1]>=1 && !vis[X+p[i][0]][Y+p[i][1]]){
			x_.push(X+p[i][0]),y_.push(Y+p[i][1]),z_.push(ans+1);
			vis[x_.back()][y_.back()]=1;
			a[x_.back()][y_.back()]=ans+1;
		}
	}
	if(x_.empty()) return ;
//	ll xx=x_.front(),yy=y_.front();
	bfs(x_.front(),y_.front(),z_.front());
}
int main(){
	scanf("%d %d %d %d",&n,&m,&x,&y);
	x_.push(x),y_.push(y),z_.push(0);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			a[i][j]=-1;
	vis[x][y]=1;
	a[x][y]=0;
	bfs(x,y,0);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			printf("%-15d ",a[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}

正解(AC)

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
queue<int> x_,y_,z_;
bool vis[405][405];
int n,m,x,y,a[405][405],p[9][2]={{0,0},{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
void bfs(int X,int Y,int ans){
	//	cout<<X<<' '<<Y<<' '<<ans<<endl;
	x_.pop();y_.pop();z_.pop();
	for(int i=1;i<=8;i++){
		//		cout<<X+p[i][0]<<' '<<Y+p[i][1]<<endl;
		if(X+p[i][0]<=n && X+p[i][0]>=1 && Y+p[i][1]<=m && Y+p[i][1]>=1 && !vis[X+p[i][0]][Y+p[i][1]]){
			x_.push(X+p[i][0]),y_.push(Y+p[i][1]),z_.push(ans+1);
			vis[x_.back()][y_.back()]=1;
			a[x_.back()][y_.back()]=ans+1;
		}
	}
	if(x_.empty()) return ;
//	ll xx=x_.front(),yy=y_.front();
	bfs(x_.front(),y_.front(),z_.front());
}
int main(){
	scanf("%d %d %d %d",&n,&m,&x,&y);
	x_.push(x),y_.push(y),z_.push(0);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			a[i][j]=-1;
	vis[x][y]=1;
	a[x][y]=0;
	bfs(x,y,0);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			printf("%-15d ",a[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}

看来除了#10外n都等于m

2025/6/29 16:50
加载中...