30分WA求助

P1443 马的遍历

@[xiangqianfeng](/user/671603) 这题深搜会超时,用**广搜**. 下附代码 ```c #include<bits/stdc++.h> #define N 1000 using namespace std; int n,m,x,y; queue<int>q1,q2; int vis[N][N]; int dis[N][N]; int dir1[8]={1,-1,1,-1,-2,-2,2,2,}; int dir2[8]={2,-2,-2,2,-1,1,-1,1,}; void in()//输入 { scanf("%d%d%d%d",&n,&m,&x,&y); } void print()//输出 { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { printf("%-5d",vis[i][j]); } printf("\n"); } } void bfs()//广搜 { while(q1.empty()==false) { for(int i=0;i<8;i++) { int cx=q1.front()+dir1[i]; int cy=q2.front()+dir2[i]; if(cx>0&&cx<=n&&cy>0&&cy<=m&&dis[cx][cy]==0) { dis[cx][cy]=1; vis[cx][cy]=vis[q1.front()][q2.front()]+1; q1.push(cx); q2.push(cy); } } q1.pop(); q2.pop(); } } void initialize()//初始化 { memset(vis,-1,sizeof(vis)); q1.push(x); q2.push(y); vis[x][y]=0; dis[x][y]=1; } int main() { in(); initialize(); bfs(); print(); return 0; } ```
by onlyfiee @ 2022-12-23 18:17:52


@[onlyfiee](/user/826691) Thanks
by xiangqianfeng @ 2022-12-25 13:48:40


|