poj3984~用bfs求最短路~同时记录路径
来源:互联网 发布:4g手机为什么用不了4g网络 编辑:程序博客网 时间:2024/05/29 13:56
今晚因为一个小小而隐蔽的错误害得我折腾了一个小时,都以为闹鬼了
xx=px[xx][yy];
yy=py[xx][yy];
这两句看似很正确,但是我却忘记了第一步会改变xx的值,使得下一步中的py就不再是那个py了!要不要我交换了一下次序还真没发现!
唉,用bfs求最短路径很容易,但是记录路径就麻烦死了,算是学到了点经验
#include<iostream>#include<string>#include<queue>#define M 8using namespace std;int vis[8][8],wx[30],wy[30];int dx[4]={-1,1,0,0};int dy[4]={0,0,1,-1};int px[8][8],py[8][8];typedef struct {int x,y,t;}mg;int bfs(){int i,len,xx,yy,xxx,yyy;queue<mg> q;mg m,mm;m.x=m.y=1;m.t=0;q.push(m);vis[1][1]=1;while(1){m=q.front();q.pop();if(m.x==5&&m.y==5){len=m.t;xx=5;yy=5;wx[len]=wy[len]=4;for(i=len-1;i>=0;i--){wx[i]=px[xx][yy]-1;wy[i]=py[xx][yy]-1;if(i!=0){xxx=px[xx][yy];yyy=py[xx][yy];xx=xxx;yy=yyy;}}return len;}for(i=0;i<4;i++){mm.x=m.x+dx[i];mm.y=m.y+dy[i];if(vis[mm.x][mm.y]==0){vis[mm.x][mm.y]=1;px[mm.x][mm.y]=m.x;py[mm.x][mm.y]=m.y;mm.t=m.t+1;q.push(mm);}}}}int main(){int i,j,len;for(i=0;i<=7;i++)for(j=0;j<=7;j++)vis[i][j]=1;for(i=1;i<=5;i++)for(j=1;j<=5;j++)scanf("%d",&vis[i][j]);len=bfs();for(i=0;i<=len;i++){printf("(%d,%d)\n",wx[i],wy[i]);}}
0 0
- poj3984~用bfs求最短路~同时记录路径
- POJ3984 迷宫问题 (BFS与路径记录)
- poj3984迷宫问题【bfs+记录路径】
- POJ3984 迷宫问题 BFS记录路径
- POJ3984 迷宫问题(BFS+记录路径)
- dijkstra求最短路并记录路径
- BFS最短路路径
- hdu 1242 用bfs求最短路
- POJ3984 BFS 输出路径
- 最短路 记录路径
- 魔戒-BFS求最短路
- UVALive7015(bfs求最短路)
- poj3984(BFS)迷宫路径
- UVA816(用BFS求最短路)(wf)
- 最短路+记录路径+变形!!
- 用BFS找最短路,并打印路径
- UVA 816 Abbott's Revenge BFS求最短路+路径输出(详细注释)
- hdu 2354(bfs求最短路)
- OpengL球体跳跃前进例子
- php中defined与define()函数
- 素数的求解
- UVA 534 - Frogger(kruskal扩展)
- android线程更新UI界面
- poj3984~用bfs求最短路~同时记录路径
- Linux企业级项目实践之网络爬虫(2)——网络爬虫的结构与工作流程
- jconsole tomcat内存监控设置
- Android图形图像之常用绘图类
- MAC中设置android adb环境变量
- HDOJ 题目2159FATE(二维完全背包)
- 王自如与老罗的辩论赛谁赢了?!
- hdu 4015 Mario and Mushrooms
- ACM俱乐部 2094:魔咒词典