博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
诡异的楼梯 HDU1180
阅读量:4647 次
发布时间:2019-06-09

本文共 2662 字,大约阅读时间需要 8 分钟。

这题做了很久  

做好了感觉很简单。。。 现在做题思路更加清晰了 

一个要点就是   当楼梯过不去的时候不能是先过去时间加2  必须得回去等一秒   否则queue的时间顺序会被打破

 

#include
using namespace std;int sx,sy,ex,ey;int n,m;char m1[31][31];bool f[31][31];struct node{ int x,y,d; node(int x=0,int y=0,int d=0):x(x),y(y),d(d){}};void bfs(){ memset(f,false,sizeof(f)); int dx[4]={
0,1,0,-1}; int dy[4]={
1,0,-1,0}; node u(sx,sy,0); queue
q; q.push(u); while(!q.empty()) { u=q.front();q.pop(); // printf("%d %d %d\n",u.x,u.y,u.d); if(u.x==ex&&u.y==ey){printf("%d\n",u.d);return;} for(int i=0;i<4;i++) { node v(u.x+dx[i],u.y+dy[i],u.d+1); if(v.x>=1&&v.x<=n&&v.y>=1&&v.y<=m&&m1[v.x][v.y]!='*') { if(m1[v.x][v.y]=='|') { if(i==0||i==2)//shuiping { if(v.d%2==1&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} else if (v.d%2==0&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];q.push(v);} } if(i==1||i==3) { if(v.d%2==1&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];f[v.x][v.y]=true;q.push(v);} else if (v.d%2==0&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} } } if(m1[v.x][v.y]=='-') { if(i==0||i==2)//shuiping { if(v.d%2==1&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];q.push(v);} else if (v.d%2==0&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} } if(i==1||i==3) { if(v.d%2==1&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x-=dx[i];v.y-=dy[i];q.push(v);} else if (v.d%2==0&&f[v.x+dx[i]][v.y+dy[i]]==false){v.x+=dx[i];v.y+=dy[i];f[v.x][v.y]=true;q.push(v);} } } else if(f[v.x][v.y]==false&&(m1[v.x][v.y]=='.'||v.x==ex&&v.y==ey)) { f[v.x][v.y]=true;q.push(v); } } } }}int main(){ while(scanf("%d%d",&n,&m)==2) { for(int i=1;i<=n;i++) { scanf("%s",m1[i]+1); for(int j=1;j<=m;j++) { if(m1[i][j]=='S'){sx=i;sy=j;} if(m1[i][j]=='T'){ex=i;ey=j;} } } // printf("%d %d %d %d\n",sx,sy,ex,ey); bfs(); //printf("pl"); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/bxd123/p/10307122.html

你可能感兴趣的文章
PAT 1023 Have Fun with Numbers[大数乘法][一般]
查看>>
三维空间中的几种坐标系
查看>>
乘法表
查看>>
4.express 框架
查看>>
Java基础算法集50题
查看>>
Android 桌面组件widget
查看>>
25-字符串
查看>>
萌新报道
查看>>
Asp.Net 获取物理路径
查看>>
Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫...
查看>>
Solr reRankQuery加自定义函数实现搜索二次排序
查看>>
基于ipv6的抓包实验
查看>>
latex学习(四)tlmgr
查看>>
centos6.5 bugzilla4.4.5 汉化
查看>>
ros topic 发布一次可能会接收不到数据
查看>>
字符串的扩展
查看>>
冒泡排序_c++
查看>>
linux常见术语示意
查看>>
CodeForces743E. Vladik and cards 二分+状压dp
查看>>
GO语言面向对象
查看>>