HDU 1180题 诡异的楼梯
2013-09-19 18:42
330 查看
题目链接~~>
这题其实很简单,在走楼梯时只要判断是否能走就可以,如果不能走,可以选择等下一分钟再走,还有一点就是楼梯不能标记,可以从不同方向过。
代码:
这题其实很简单,在走楼梯时只要判断是否能走就可以,如果不能走,可以选择等下一分钟再走,还有一点就是楼梯不能标记,可以从不同方向过。
代码:
#include<stdio.h> #include<queue> using namespace std ; int dx[4]={-1,1,0,0},dy[4]={0,0,1,-1} ; char s[25][25] ; int m,n ; struct zhang { int x,y,bu ; } ; int bfs(int x,int y) { queue<zhang>q ; zhang current,next ; int sx,sy ; current.x=x ; current.y=y ; s[x][y]='*' ; current.bu=0 ; q.push(current) ; while(!q.empty()) { current=q.front() ; q.pop() ; for(int i=0;i<4;i++) { next.x=current.x+dx[i] ; next.y=current.y+dy[i] ; if(next.x>=0&&next.x<n&&next.y>=0&&next.y<m&&s[next.x][next.y]!='*') { next.bu=current.bu+1 ; sx=next.x+dx[i] ; sy=next.y+dy[i] ; if(s[next.x][next.y]=='|'&&s[sx][sy]!='*') { if(current.bu%2&&(i==3||i==2)) { next.x=sx ; next.y=sy ; if(s[sx][sy]=='T') return next.bu ; s[sx][sy]='*' ; q.push(next) ; } else if(current.bu%2==0&&(i==0||i==1)) { next.x=sx ; next.y=sy ; if(s[sx][sy]=='T') return next.bu ; s[sx][sy]='*' ; q.push(next) ; } else { next.x=current.x ; next.y=current.y ; q.push(next) ; } } else if(s[next.x][next.y]=='-'&&s[sx][sy]!='*') { if(current.bu%2==0&&(i==3||i==2)) { next.x=sx ; next.y=sy ; if(s[sx][sy]=='T') return next.bu ; s[sx][sy]='*' ; q.push(next) ; } else if(current.bu%2==1&&(i==0||i==1)) { next.x=sx ; next.y=sy ; if(s[sx][sy]=='T') return next.bu ; s[sx][sy]='*' ; q.push(next) ; } else { next.x=current.x ; next.y=current.y ; q.push(next) ; } } else if(s[next.x][next.y]=='.') { s[next.x][next.y]='*' ; q.push(next) ; } else if(s[next.x][next.y]=='T') return next.bu ; } } } return -1 ; } int main() { int i,j,ax,ay ; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;i++) { scanf("%s",s[i]) ; for(j=0;j<m;j++) if(s[i][j]=='S') { ax=i ; ay=j ; } } printf("%d\n",bfs(ax,ay)) ; } return 0 ; }
相关文章推荐
- hdu1180诡异的楼梯【优先队列+广搜】
- hdu 1180 诡异的楼梯
- hdu 1180 诡异的楼梯
- HDU 1180 诡异的楼梯
- 诡异的楼梯 hdu 1180
- HDU 1180 诡异的楼梯(BFS+奇偶步数判断)
- hdu 1180:诡异的楼梯(BFS广搜)
- HDU 1180 诡异的楼梯(广搜)
- HDU1180——诡异的楼梯(BFS+优先队列)
- hdu 1180 诡异的楼梯 BFS+优先队列
- HDU 1180诡异的楼梯
- Hdu-1180(诡异的楼梯)
- hdu 1180 诡异的楼梯
- HDU--杭电--1180--诡异的楼梯--广搜--蛋疼的流氓讲师今天弄完了这楼梯,想说的是理清思路就好,这题原来这么水
- HDU 1180 (诡异的楼梯)+HDU 2102 (A计划)
- HDU 1180 诡异的楼梯 BFS
- HDU-1180-诡异的楼梯
- hdu 1180 诡异的楼梯
- hdu1180诡异的楼梯……bfs走迷宫……wa了16次,我太渣了
- hdu 1180 诡异的楼梯(广搜,简单)