社区讨论
萌新不明白..为啥dfs错误了..求助
P1443马的遍历参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi85vqy0
- 此快照首次捕获于
- 2025/11/21 09:08 4 个月前
- 此快照最后确认于
- 2025/11/21 09:08 4 个月前
CPP
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<iomanip>
using namespace std;
int map[405][405];
bool mark[405][405];
const int dx[8]={-1,1,2,2,1,-1,-2,-2};
const int dy[8]={2,2,1,-1,-2,-2,-1,1};
int n,m;
int x,y;
void dfs(int a,int b,int k)
{if(a<1||a>n||b<1||b>m) return;
mark[a][b]=1;
if(map[a][b]>=k)
map[a][b]=k;
for(int i=0;i<8;i++)
dfs(a+dx[i],b+dy[i],k+1);
//if(b+1<=m&&a+2<=n) dfs(a+2,b+1,k+1);
//if(b-1>0&&a+2<=n) dfs(a+2,b-1,k+1);
//if(b+2<=m&&a+1<=n) dfs(a+1,b+2,k+1);
//if(b+2<=m&&a-1>0) dfs(a-1,b+2,k+1);
//if(b-1>0&&a-2>0) dfs(a-2,b-1,k+1);
//if(b+1<=m&&a-2>0) dfs(a-2,b+1,k+1);
//if(b-2>0&&a+1<=n) dfs(a+1,b-2,k+1);
//if(b-2>0&&a-1>0) dfs(a-1,b-2,k+1);
}
int main()
{cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
map[i][j]=999999;
dfs(1,1,0);
for(int i=1;i<=n;i++)
{for(int j=1;j<=m;j++)
{if(mark[i][j]==0) printf("%-5d",-1);;
if(mark[i][j]!=0)
printf("%-5d",map[i][j]);;
}
cout<<endl;
}
return 0;
}
嘤嘤嘤
回复
共 4 条回复,欢迎继续交流。
正在加载回复...