1319
2016-04-27 20:05
225 查看
//题意:最短路+方向
//在搜索的时候加上方向;
//在搜索的时候加上方向;
//良辰的代码 #include<stdio.h> #include<string.h> #include<queue> using namespace std; char map[200][200]; int use[200][200][4],n,m; int dir[5][2]={0,0,-1,0,1,0,0,-1,0,1};//原点,上下左右 struct node{ int x; int y; int count; int di; }; int BFS(int ix,int iy){ node tem; tem.x=ix; tem.y=iy; tem.count=0; tem.di=1; use[ix][iy][1]=1; queue<node> que; que.push(tem);////起点入队 while(!que.empty()) { node now=que.front(); que.pop(); node next=now; if(map[now.x][now.y]=='T') return now.count; next.x=now.x+dir[now.di][0];// next.y=now.y+dir[now.di][1];// if(next.x>=0&&next.y>=0&&next.x<n&&next.y<m&&!use[next.x][next.y][next.di]&&map[next.x][next.y]!='#') { next.count++; use[next.x][next.y][next.di]=1; que.push(next); } next=now;// if(now.di==1||now.di==2)//1 { next.di=3; if(!use[next.x][next.y][next.di]) { next.count++; use[next.x][next.y][next.di]=1; que.push(next); } next=now; next.di=4; if(!use[next.x][next.y][next.di]) { next.count++; use[next.x][next.y][next.di]=1; que.push(next); } } next=now; if(now.di==3||now.di==4)//2 { next.di=2; if(!use[next.x][next.y][next.di]) { next.count++; use[next.x][next.y][next.di]=1; que.push(next); } next=now; next.di=1; if(!use[next.x][next.y][next.di]) { next.count++; use[next.x][next.y][next.di]=1; que.push(next); } } } return -1; } int main() { int T; scanf("%d",&T); while(T--) { memset(use,0,sizeof(use)); int ix=0,iy=0; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%s",map[i]); for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(map[i][j]=='S'){ ix=i;iy=j;break; } int ans; ans=BFS(ix,iy); printf("%d\n",ans); } return 0; }
相关文章推荐
- Python中if-else语句的多种写法
- 1043. Is It a Binary Search Tree (25)
- table
- static
- 【AR】Meta AR Glass-一场革命即将到来?
- 带动画效果的三方欢迎界面
- ZC_身份验证_系统管理员
- 团队站立会议09
- 汇编语言--百度百科
- 解决AnimationDrawable动画不运行的问题
- casperjs的高级应用
- Powell优化算法
- 【Redis源码剖析】 - Redis之事务的实现原理
- HDU3591 01 背包 + 完全背包 + 多重背包 混用
- drawable中的selector子项顺序
- centos7安装docker并设置开机启动
- (转)Java安全通信:HTTPS与SSL
- Young Table(暴力,交换位置)
- 利用caffe训练的模型,写一个测试程序
- 操作系统笔记---内存管理