社区讨论

40分求调

P1443马的遍历参与者 1已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhizdj0x
此快照首次捕获于
2025/11/03 18:11
4 个月前
此快照最后确认于
2025/11/03 18:11
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int a[160005][2],n,m,x3,y3;
int see[405][405]; 
int dx[8]={1,1,-1,-1,2,-2,2,-2},dy[8]={2,-2,2,-2,1,1,-1,-1};
void bfs(int w){
	int i=0;
	while(i<=w){
		i++;
		for(int j=0;j<8;j++){
			int xx=a[i][0]+dx[j],yy=a[i][1]+dy[j];
			if(xx>0&&xx<=n&&yy>0&&yy<=n&&see[xx][yy]==-1){
				w++;
				see[xx][yy]=see[a[i][0]][a[i][1]]+1;
				a[w][0]=xx;
				a[w][1]=yy;
//				cout<<1<<endl;
			}
//			cout<<xx<<" "<<yy<<" "<<i<<endl;
		}

	}
}
int main(){
	cin>>n>>m>>x3>>y3;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)see[i][j]=-1;
	}
	a[1][0]=x3;
	a[1][1]=y3;
	
	see[x3][y3]=0;
	bfs(1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)cout<<see[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...