社区讨论
MLE求调!!!
P1443马的遍历参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m3ss44dx
- 此快照首次捕获于
- 2024/11/22 21:30 去年
- 此快照最后确认于
- 2025/11/04 14:10 4 个月前
还是用dfs打bfs
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[407][407];
int n,m,x,y;
void dfs(int x,int y,int k){
if(a[x][y]==-1){
a[x][y]=k;
}
else if(a[x][y]>k){
a[x][y]=k;
}
if(x-1>=1&&y+2<=m) dfs(x-1,y+2,k+1);
if(x+1<=n&&y+2<=m) dfs(x+1,y+2,k+1);
if(x-1>=1&&y-2>=1) dfs(x-1,y-2,k+1);
if(x+1<=n&&y-2>=1) dfs(x+1,y-2,k+1);
if(x+2<=n&&y+1<=m) dfs(x+2,y+1,k+1);
if(x+2<=n&&y-1>=1) dfs(x+2,y-1,k+1);
if(x-2>=1&&y-1>=1) dfs(x-2,y-1,k+1);
if(x-2>=1&&y+1<=m) dfs(x-2,y+1,k+1);
}
signed main(){
cin.tie(0);
cout.tie(0);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
a[i][j]=-1;
}
}
cin>>n>>m>>x>>y;
a[x][y]=0;
dfs(x,y,0);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a[i][j]<<' ';
}
putchar('\n');
}
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...