这道题直接按照题意来解,建立坐标系和移动方案,思路是比较简单的。只是需要注意需要使用set来判断是否遇到障碍,否则会超时。

int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {int N = commands.size();int M = obstacles.size();//向上 Wx=0,Wy=1//向左 Wx=-1,Wy=0//向下 Wx=0,Wy=-1//向右 Wx=1,Wy=0set<pair<int, int>> st;for (auto &obs : obstacles){st.insert(make_pair(obs[0], obs[1]));}int Wx = 0;int Wy = 1;int Px = 0;int Py = 0;int maxdistance = 0;for (int i = 0; i < N; i++){int cmd = commands[i];//当前指令        if (cmd == -2)//左转
        {if (Wx == 0 && Wy == 1)//上-->左
            {Wx = -1;Wy = 0;}else if (Wx == -1 && Wy == 0)//左-->下
            {Wx = 0;Wy = -1;}else if (Wx == 0 && Wy == -1)//下-->右
            {Wx = 1;Wy = 0;}else if (Wx == 1 && Wy == 0)//右-->上
            {Wx = 0;Wy = 1;}}else if (cmd == -1)//右转
        {if (Wx == 0 && Wy == 1)//上-->右
            {Wx = 1;Wy = 0;}else if (Wx == -1 && Wy == 0)//左-->上
            {Wx = 0;Wy = 1;}else if (Wx == 0 && Wy == -1)//下-->左
            {Wx = -1;Wy = 0;}else if (Wx == 1 && Wy == 0)//右-->下
            {Wx = 0;Wy = -1;}}else//移动 1<=x<=9
        {//此次移动之前的起点位置为Px和Pyint Tmpx = Px;int Tmpy = Py;while (cmd > 0){//以(Wx,Wy)为步进,移动一次Tmpx += Wx;Tmpy += Wy;if (st.find(make_pair(Tmpx, Tmpy)) != st.end()){Tmpx -= Wx;Tmpy -= Wy;cmd = 0;}cmd--;}int distance = Tmpx*Tmpx + Tmpy*Tmpy;if (maxdistance < distance){maxdistance = distance;}Px = Tmpx;Py = Tmpy;}}return maxdistance;
}

转载于:https://www.cnblogs.com/asenyang/p/9692927.html

leetcode874相关推荐

  1. Leetcode题874、模拟行走机器人(Python题解)

    问题: 题目来源:力扣(LeetCode) leetcode874.模拟行走机器人 难度:简单 分析: 逻辑模拟. 几个小技巧: 1.list是顺序查找,set是哈希查找,所以set会很快.set实际 ...

  2. 模拟(持续更新、整理)

    链表 两数相加:leetcode-2 两两交换链表只能够的节点:leetcode-24 K个一组翻转链表:leetcode-25 旋转链表:leetcode-61 反转链表II:leetcode-92 ...

最新文章

  1. java中i++和++i与c里的区别
  2. 智能汽车带火汽车存储产品 三星/东芝/SK海力士/美光纷纷“下手”
  3. oracle查看表和索引碎片,Oracle 表空间索引存储与碎片检查
  4. C# 以日期时间作为文件名学习总结
  5. netcore开源框架_.NET Core开发精选文章目录,持续更新,欢迎投稿!
  6. 肽键肽链内部分的计算机术语大全,生化资料
  7. C# 读取文件内容/输出txt log
  8. nginx历史版本下载链接
  9. 刘德华--6雪藏是一种代价
  10. python电脑下载-PC端数据下载软件开发(Python)
  11. [转载] Python dict.keys方法
  12. matlab函数关系式,怎么用MATLAB建立数据间的函数关系
  13. npm安装报错(npm ERR code EPERM npm ERR syscall mkdir npm ERR path CProgram Filesnodejsnode_ca...)
  14. 使用gca警告: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4.
  15. 地统计分析在气象领域的应用
  16. 谷歌退出将会给中国互联网带来的10个变化
  17. 公众号运营,如何快速找到内容定位?
  18. 青春不是用来抱怨,而是用来奋斗的
  19. 【中级计量经济学】Lecture 3 非球形扰动
  20. 分享一下杭州医院的看病流程(我去的杭州市第三人民医院)

热门文章

  1. 白话Elasticsearch08-深度探秘搜索技术之基于boost的细粒度搜索条件权重控制
  2. Toolbar-5.0新特性
  3. Java学习笔记(三)--Java主类结构
  4. python 选择排序算法
  5. docker新建Linux虚拟机,RHEL/CentOS 7下创建你的第一个Docker容器
  6. git 撤销刚才的rebase_git rebase 的使用 (用于撤销某次commit)
  7. c语言中说取消标识符是,2019年全国计算机二级C语言考试考点解析(3)
  8. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  9. python通过pyinstaller打包软件将GUI项目打包成exe文件
  10. linux安装mysql5.7.25教程,Linux安装mysql-5.7.25