社区讨论
P1443 马的遍历 萌新第一次广搜 求助
学术版参与者 7已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @mi7cmjfd
- 此快照首次捕获于
- 2025/11/20 19:29 4 个月前
- 此快照最后确认于
- 2025/11/20 21:58 4 个月前
#include
#include<stdio.h>
#include
using namespace std;
int n,m,a,b,x,y,g,t,w;
int h[401][5],k[401][401];
bool f[401][401];
int xx[9]={0,1,-1,2,-2,1,-1,2,-2},
yy[9]={0,2,2,1,1,-2,-2,-1,-1};
int main()
{
cin>>n>>m>>a>>b;
h[1][1]=a;
h[1][2]=b;
h[1][3]=0;
memset(f,true,sizeof(f));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
bool p=false;
for(int e=1;e<=8;e++)
if (i+xx[e]>0&&j+yy[e]>0&&i+xx[e]<=n&&j+yy[e]<=m){p=true;break;}
if (p==false)
{
k[i][j]=-1;
f[i][j]=false;
g++;
}
}
// cout<<endl;
f[a][b]=false;
k[a][b]=0;
t=0;
w=1;
do
{
t++;
for(int i=1;i<=8;i++)
{
x=h[t][1]+xx[i];
y=h[t][2]+yy[i];
// cout<<x<<' '<<y<<' '<<f[x][y]<<endl;
if (x>0&&y>0&&x<=n&&y<=m&&f[x][y])
{
f[x][y]=false;
w++;
g++;
h[w][1]=x;
h[w][2]=y;
h[w][3]=h[t][3]+1;
k[x][y]=h[w][3];
// cout<<k[x][y]<<endl;
}
// cout<<endl;
}
}while(g<n*m&&t<w);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
printf("%-5d", k[i][j]);
printf("\n");
}
}
回复
共 12 条回复,欢迎继续交流。
正在加载回复...