社区讨论

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 条回复,欢迎继续交流。

正在加载回复...