因为机器人走的是格子上的线,而题目给的机器人的坐标是他的左上方,所以进行构图的时候可以从1,1点进行构图,方便理解,格子上的线看成从0,0点开始的,从而进行构图,每块格子跟格子上线一一对应。

ac代码:

#include<iostream>
#include<queue>
#include<cstring>using namespace std;const int maxn=55;int g[maxn][maxn];
int time[maxn][maxn][4];
int n,m;
const int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};struct point{int x;int y;int t;int d;point(int x,int y,int t,int d):x(x),y(y),t(t),d(d){}bool operator < (point n) const {return t>n.t;}
};int bfs(int x1,int y1,int x2,int y2,int d){priority_queue<point> q;q.push(point(x1,y1,0,d));time[x1][y1][d]=0;while(!q.empty()){point pt=q.top();q.pop();if(pt.x==x2&&pt.y==y2){return pt.t;}d=pt.d;int x=pt.x;int y=pt.y;if(time[x][y][(d+1)%4]==-1||time[x][y][(d+1)%4]>pt.t+1){time[x][y][(d+1)%4]=pt.t+1;q.push(point(x,y,pt.t+1,(d+1)%4));}if(time[x][y][(d-1+4)%4]==-1||time[x][y][(d-1+4)%4]>pt.t+1){time[x][y][(d-1+4)%4]=pt.t+1;q.push(point(x,y,pt.t+1,(d-1+4)%4));}for(int i=1;i<=3;i++){x+=dir[d][0];y+=dir[d][1];if(x<=0||y<=0||x>=m||y>=n) break;if(g[x][y]==1) break;if(time[x][y][d]==-1||time[x][y][d]>pt.t+1){time[x][y][d]=pt.t+1;q.push(point(x,y,pt.t+1,d));}}}return -1;
}int main(){while(cin>>m>>n&&m+n){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cin>>g[i][j];if(g[i][j]==1){g[i-1][j]=g[i][j-1]=g[i-1][j-1]=1;}}}int x1,x2,y1,y2,d;char s[10];cin>>x1>>y1>>x2>>y2>>s;if(s[0]=='n') d=0;else if(s[0]=='e') d=1;else if(s[0]=='s') d=2;else d=3;memset(time,-1,sizeof(time));cout<<bfs(x1,y1,x2,y2,d)<<endl;}return 0;
}

POJ 1376 Robot相关推荐

  1. POJ - 1376 Robot

    题意:求在可以一秒沿着既定方向走1到3步和向左或右转90度的情况下,从起点到终点的最短时间 思路:坑的是这机器人还有体积,所以不能走到边界,然后就是单纯的BFS #include <iostre ...

  2. poj 1729 Jack and Jill 1376 Robot 1324 Holedox Moving 1475 Pushing Boxes bfs + a*

    poj 1729 Jack and Jill Jack和Jill要从各自的家走到各自的学校,但是他们俩各自不喜欢对方,因此,需要你找到两个人行走的路线,使得他们路线中两个人最近的直线距离最长.单位时间 ...

  3. POJ -1573 Robot Motion

    题目链接:POJ 1573 Robot Motion 一个小模拟,非常easy,依照提示一步步走就是了 #include <iostream> #include <cstdio> ...

  4. POJ -- 1573 Robot Motion

    2019独角兽企业重金招聘Python工程师标准>>> 其实模拟题经常用到环这个东西,我发觉挺多宽搜的题目也是,状态来回转移,最终成了环. 多说一点,最近做了不少宽搜的题(很简单), ...

  5. ACM练级日志: POJ 1376

    本来是因为另一道题过不去而来找一道搜索题虐一下的,结果自己反而被虐了-- 这是一道很纯粹的BFS寻路题,写的时候因为比较急躁,犯了不少错误.写题的时候还是不能着急啊,尤其是比赛的时候更为紧张,稍微一错 ...

  6. ACM题集以及各种总结大全(转)

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  7. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  8. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  9. 搜索题,留着以后慢慢刷

    转过来,留着以后慢 慢 刷555.. 简单搜索 (1)深度优先搜索 (poj2488,poj3009,poj1321) (2)广度优先搜索 (poj3278,poj1426,poj3126,poj30 ...

最新文章

  1. 2018-3-7 HDFS架构
  2. android opengl es 纹理 不同设备 白色,android – OpenGL ES 2.0纹理没有在某些设备上显示...
  3. JavaScript方法
  4. 如何在Java 8中将Lambda表达式转换为方法引用?
  5. ORA-00906 missing left parenthesis括号
  6. 解读:滴滴“猜你去哪儿”功能的算法实现
  7. 如何在HTML中关闭自动换行?
  8. Flutter 生命周期
  9. 2018杭州云栖大会免费送票啦!
  10. 计算机不断自动重启,电脑不断自动重启怎么办_解决电脑不断自动重启的方法...
  11. 具有自主、多鳍和仿生机器人的鱼类三维游泳(2021)
  12. 中秋测试大礼包来了,送一个测试流量app~
  13. 浅谈Session并且实现购物车
  14. [转]爱到支离破碎!!!
  15. Java核心类库(一)
  16. 恐龙世界游戏-恐龙百科世界乐园游戏
  17. 跨境独立建站_做外贸为什么独立建站更重要?
  18. 数据分析-描述数据方法
  19. 您有一份来自COSCon'21的志愿者感谢信,请查收!
  20. linux网络丢包测试工具,用NETEM模拟网络丢包 (转)

热门文章

  1. 杭州计算机职称考试证书哪里拿,2020年杭州市口腔中级职称考试证书可以领取啦!各位考生速看!...
  2. 从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(三)
  3. Android V1、V2签名包和快速集成美团多渠道打包
  4. 华为服务器系统兼容性查询
  5. 遭遇Trojan.DL.Multi.wfg(sss.exe、SCVHOST.EXE、autorun.inf)等
  6. 2021年注册电气工程师(供配电)执业资格考试专业考试大纲
  7. 证件照模糊不清怎么办?教你这招轻松增强照片清晰度
  8. [线性规划 对偶原理 单纯形] BZOJ 3265 志愿者招募加强版
  9. 【华为机试真题详解】日志首次上报最多积分【2022 Q4 | 100分】
  10. 织梦文章无法文件html模板不存在,织梦彻底解决“模板文件不存在,无法解析文档...