UVa439(BFS最短路实现)
2015-07-26 20:37
323 查看
#include <iostream> using namespace std; struct Node{ int x; int y; int step; }que[100]; int book[8][8]; string beginstr; string endstr; int endx; int endy; int direct[8][2]={{2,1},{2,-1},{-1,2},{-1,-2},{1,2},{1,-2},{-2,-1},{-2,1}}; int main(){ while(cin>>beginstr>>endstr){ int x=8-(beginstr[1]-'0'); int y=beginstr[0]-'a'; endx=8-(endstr[1]-'0'); endy=endstr[0]-'a'; int flag=0; int head=0; int tail=0; que[tail].x=x; que[tail].y=y; que[tail].step=0; tail++; book[x][y]=1; //别忘了确保队列不为空 while(head<tail){ for(int i=0;i<8;i++){ int dx=que[head].x+direct[i][0]; int dy=que[head].y+direct[i][1]; if(dx>=8||dx<0||dy>=8||dy<0) continue; if(dx==endx&&dy==endy){ flag=1; break; } if(book[dx][dy]==0){ book[dx][dy]=1;//BFS必须要标记已走过的点 que[tail].x=dx; que[tail].y=dy; que[tail].step=que[head].step+1; tail++; } } if(flag) break; head++;//别忘了head++才能对下一个点进行拓展 } cout<<que[tail-1].step<<endl; } return 0; }
比DFS速度快,找到最短路径即返回
相关文章推荐
- HDU 3023 Dirt 踩黑白块
- mysql服务启动、停止、重启
- 八大排序总结
- UVa439(DFS实现)
- 【数据结构】1、串的模式匹配算法
- 算法学习笔记——贪婪
- SQL基础学习_04_视图
- 命令别名alias设置
- Java 设计模式—装饰者模式
- (_)snprintf跨平台测试
- hdu 5130 && BestCoder 1st Anniversary 1001
- java socket编程
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记39 Alert&ActionSheet
- Linux命令学习手册-tr命令
- Java设计模式偷跑系列(21)建模和实现享受metapatterns
- Linux命令学习手册-tr命令 2015-07-26 20:35 9人阅读 评论(0) 收藏
- [BZOJ 1001] [BeiJing2006]狼抓兔子
- UVA 10878
- NSDate类目-实现 1分钟前 X小时前 昨天的显示
- PAT编程:从A+B>C到int和long的区别