hdu 1180诡异的楼梯(bfs)
来源:互联网 发布:9块9疯抢淘宝特卖 编辑:程序博客网 时间:2024/06/10 02:33
时间数组标记是否将遇到的位置进队列即可,应该用优先队列也是可以的,不过麻烦。
#include <iostream>#include <queue>#include <cstring>using namespace std;struct point{int x,y,step;}s,e;queue<point> q;int n,m,tim[25][25];char map[25][25];int h[4][2]={1,0,-1,0,0,1,0,-1};int BFS(){while(!q.empty()) q.pop();int i,j,xx,yy,shu; point t,tt;q.push(s);tim[s.x][s.y]=0;while(!q.empty()){t=q.front(); q.pop();for(i=0;i<4;i++){xx=t.x+h[i][0]; yy=t.y+h[i][1];if(xx>=0&&xx<n&&yy>=0&&yy<m&&map[xx][yy]!='*'){tt.step=t.step+1;if(map[xx][yy]=='|') {xx=xx+h[i][0]; yy=yy+h[i][1]; //对达楼梯对面 if(xx>=0&&xx<n&&yy>=0&&yy<m&&map[xx][yy]!='*') //楼梯前面还有路 {if(t.step%2!=0&&i<=1||t.step%2==0&&i>1) tt.step+=1;if(tt.step<tim[xx][yy]){tt.x=xx; tt.y=yy; q.push(tt);tim[xx][yy]=tt.step;}} }else if(map[xx][yy]=='-'){xx=xx+h[i][0]; yy=yy+h[i][1]; //到达楼梯对面 if(xx>=0&&xx<n&&yy>=0&&yy<m&&map[xx][yy]!='*') //楼梯前面还有路 {if(t.step%2!=0&&i>1||t.step%2==0&&i<=1) tt.step+=1;if(tt.step<tim[xx][yy]){tt.x=xx; tt.y=yy; q.push(tt);tim[xx][yy]=tt.step;}} }else {if(tt.step<tim[xx][yy]){tt.x=xx; tt.y=yy; q.push(tt);tim[xx][yy]=tt.step;}}}}}return tim[e.x][e.y];}int main(int argc, char *argv[]){int i,j;while(cin>>n>>m){for(i=0;i<n;i++)for(j=0;j<m;j++){cin>>map[i][j];if(map[i][j]=='S'){s.x=i; s.y=j; s.step=0; tim[i][j]=0;}else if(map[i][j]=='T'){e.x=i; e.y=j;}}memset(tim,0x33,sizeof(tim));cout<<BFS()<<endl;}return 0;}
- hdu 1180诡异的楼梯(bfs)
- HDU 1180:诡异的楼梯(BFS)
- hdu 1180 诡异的楼梯(bfs)
- hdu 1180 诡异的楼梯 (bfs)
- 【Bfs】HDU 1180 诡异的楼梯
- HDU 1180 诡异的楼梯 BFS
- HDU 1180 诡异的楼梯 BFS
- HDU 1180 诡异的楼梯 (BFS)
- 【HDU 1180】诡异的楼梯(BFS)
- HDU 1180 诡异的楼梯(BFS)
- HDU 1180 诡异的楼梯(bfs+判断)
- hdu 1180 诡异的楼梯 (BFS)
- HDU 1180 诡异楼梯 bfs
- hdu 1180 诡异的楼梯(bfs+优先队列)
- hdu 1180 诡异的楼梯(bfs+最短路+dp)
- HDU 1180 诡异的楼梯(BFS:时间动态图)
- HDU 1180——诡异的楼梯( BFS)
- 【BFS&&优先队列】HDU 1180 诡异的楼梯
- XAMPP Error: Apache shutdown unexpectedly. 解决思路
- FlashBuilder 快捷键总结
- poj 2707 Copier Reduction
- android开发之众多Android 开源项目推荐
- 使用Keil MDK以及标准外设库创建STM32工程 (http://emouse.cnblogs.com)
- hdu 1180诡异的楼梯(bfs)
- PHP概率算法(适用于抽奖、随机广告)
- 在VS2010中集成AutoVue20.2.1控件
- v$session_wait
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- 编程名言名句
- Documentation/block/ioprio
- C# 只启动一个实例完全解决方案
- UML_部署图