网站保留密码 怎么做,大型网站制作设计,怎样使用仿站小工具做网站,做计算机题的网站题目描述与DFS模型走迷宫那篇一样。小哈被困在迷宫里#xff0c;小哼解救小哈。 这里用BFS来写。BFS#xff08;广搜#xff09;与DFS#xff08;深搜#xff09;的区别就在于#xff0c;DFS是“不撞南墙不回头”#xff0c;一条路走到不能再走之后才会回到起始点#…题目描述与DFS模型走迷宫那篇一样。小哈被困在迷宫里小哼解救小哈。 这里用BFS来写。BFS广搜与DFS深搜的区别就在于DFS是“不撞南墙不回头”一条路走到不能再走之后才会回到起始点另开辟一条新的道路而BFS是将道路层层扩展走到一个点时会同时搜索附近能到达的点同时进行。 这里先附上我最开始的代码但编译出来是错的 #includestdio.h#includealgorithm#includeiostream#includestring.h#includemath.h#includeset#includemapusing namespace std;struct node{ int x,y,s;};int main(){ struct node q[5000]; int a[1005][1005]{0},book[1005][1005]{0}; int dir[4][2]{{0,1},{1,0},{0,-1},{-1,0}}; int i,j,n,m,p,q1,tx,ty,flag0; int head,tail; //队列 scanf(%d%d,n,m); scanf(%d%d,p,q1); for(i1;in;i) { for(j1;jm;j) { scanf(%d,a[i][j]); } } head1; tail1; q[head].x1; q[head].y1; q[head].s0; tail; book[1][1]1; while(headtail) { for(i1;i3;i) { txq[head].xdir[i][0]; tyq[head].ydir[i][1]; if(txn||tx1||tym||ty1) continue; if(a[tx][ty]0book[tx][ty]0) { book[tx][ty]1; q[tail].xtx; q[tail].yty; q[tail].sq[head].s1; tail; } if(txptyq1) { flag1; break; } } if(flag1) break; else head; } printf(%d\n,q[head-1].s); //这个时候tail指向队列的末尾 return 0;} 一开始是不能输出把最开始的那些变量定义在主函数前竟然就可以进行输入了我也不知道为啥。然后可以输入之后我尝试了这组数据但输出是0还是错的 问了同学她把我的输入输出格式给改了cin cout但是我觉得这没什么影响呀还有走四个方向的那个for循环我 i 一开始从1开始这样就只进行了三个方向的搜索应该从i0开始最后是输出q[head].s,而不是head-1最后正确代码如下 #includestdio.h#includealgorithm#includeiostream#includestring.h#includemath.h#includeset#includemapusing namespace std;struct node{ int x,y,s;} ;struct node q[5000];int a[1005][1005] {0};int book[1005][1005] {0}, dir[4][2] {{0,1},{1,0},{0,-1},{-1,0}};int main(){ int i,j,n,m,p,q1,tx,ty,flag0; int head,tail; //队列 cinnm; for(i1; in; i) { for(j1; jm; j) { scanf(%d,a[i][j]); } } cinpq1; head1; tail1; q[head].x1; q[head].y1; q[head].s0; tail; book[1][1]1; while(headtail) { for(i0; i3; i) { txq[head].xdir[i][0]; tyq[head].ydir[i][1]; if(txn||tx1||tym||ty1) continue; if(a[tx][ty]0book[tx][ty]0) { book[tx][ty]1; q[tail].xtx; q[tail].yty; q[tail].sq[head].s1; tail; } if(txptyq1) { flag1; break; } } if(flag1) break; else head; } printf(%d\n,q[head].s1); //这个时候tail指向队列的末尾 return 0;} 转载于:https://www.cnblogs.com/programming123/p/10833757.html