因为机器人走的是格子上的线,而题目给的机器人的坐标是他的左上方,所以进行构图的时候可以从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. <马哲>劳动价值论的理论及实践意义
  2. java四则运算器算法_java写的四则运算器
  3. Ubuntu DNS bind9 配置
  4. windows下的终端工具和产品力
  5. 通过浏览器启动php cli,Cron作业PHP脚本失败但脚本将通过CLI或浏览器运行
  6. web安全day18:kali下的两个实验彻底理解中间人攻击
  7. asp.net 2.0中实现防盗链
  8. python二叉树的非递归遍历
  9. java qq验证_用Java代码来校验QQ号
  10. maven引用公共包_maven怎么 引入(或引用/使用) 自定义(或本地/第三方) jar的三种方式 图文教程-Fun言...
  11. 【分享】“飞书第三方“在集简云平台集成应用的常见问题与解决方案
  12. 8080端口被占怎么解决
  13. 通信室计算机室采购配置co2灭火器,安全设施标准手册.doc
  14. MFC 控件PictureControl 清除显示
  15. SortedMap与TreeMap的一个典型应用
  16. 求数组中顺序子集和最大的值(详细图解)
  17. 【openssl】静态构建及MDd构建及bat复制生成的文件
  18. 监控软件的灰与黑:为了偷看手机我们付出了什么?
  19. 景德镇人都应该知道的一个历史人物--唐英
  20. 代码随想录Day02 | LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II

热门文章

  1. 系统梳理---轨道式RGV
  2. zemax光学设计第二版
  3. 支持中国信用卡网购的海外好网店(希望各位坛友补充)
  4. .sln图标异常修复
  5. `墙`内各种软件源集结
  6. steam 安装及简易设置
  7. 初探AngularJS6.x---目录结构说明 1
  8. 前端计算色系渐变颜色
  9. 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 3 章 答案
  10. Android Mac 打开屏幕抓取工具Uiautomatorviewer