模拟行走机器人-c语言

机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands :

-2 :向左转 90 度
-1 :向右转 90 度
1 <= x <= 9 :向前移动 x 个单位长度

在网格上有一些格子被视为障碍物 obstacles 。第 i 个障碍物位于网格点 obstacles[i] = (xi, yi) 。

机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续尝试进行该路线的其余部分。

返回从原点到机器人所有经过的路径点(坐标为整数)的最大欧式距离的平方。(即,如果距离为 5 ,则返回 25 )

注意:

北表示 +Y 方向。
东表示 +X 方向。
南表示 -Y 方向。
西表示 -X 方向。

示例 1:

输入:commands = [4,-1,3], obstacles = []
输出:25
解释:
机器人开始位于 (0, 0):

  1. 向北移动 4 个单位,到达 (0, 4)
  2. 右转
  3. 向东移动 3 个单位,到达 (3, 4)
    距离原点最远的是 (3, 4) ,距离为 32 + 42 = 25

示例 2:

输入:commands = [4,-1,4,-2,4], obstacles = [[2,4]]
输出:65
解释:机器人开始位于 (0, 0):

  1. 向北移动 4 个单位,到达 (0, 4)
  2. 右转
  3. 向东移动 1 个单位,然后被位于 (2, 4) 的障碍物阻挡,机器人停在 (1, 4)
  4. 左转
  5. 向北走 4 个单位,到达 (1, 8)
    距离原点最远的是 (1, 8) ,距离为 12 + 82 = 65

代码解决如下,还是很不错的一题

int robotSim(int* commands, int commandsSize, int** obstacles, int obstaclesSize, int* obstaclesColSize){int d=0;int i,j;int x=0;int y=0;int l[commandsSize];int p=0;int lr;for(i=0;i<commandsSize;i++){if(commands[i]==-1){d=(d+1)%4;continue;}if(commands[i]==-2){d=abs(d-1+4)%4;continue;}if(commands[i]>=0){if(d==0){lr=y+commands[i]+1;if(obstaclesSize>0)for(j=0;j<obstaclesSize;j++){if(y+commands[i]>=obstacles[j][1]&&x==obstacles[j][0]&&y<obstacles[j][1]){if(obstacles[j][1]<lr){lr=obstacles[j][1];}}}y=lr-1;printf("xy %d %d %d ",x,y,x*x+y*y);l[p++]=x*x+y*y;}else if(d==1){lr=x+commands[i]+1;if(obstaclesSize>0)for(j=0;j<obstaclesSize;j++){if(x+commands[i]>=obstacles[j][0]&&y==obstacles[j][1]&&x<obstacles[j][0]){if(obstacles[j][0]<lr){lr=obstacles[j][0];}}}x=lr-1;printf("xy %d %d %d ",x,y,x*x+y*y);l[p++]=x*x+y*y;}else if(d==2){lr=y-commands[i]-1;if(obstaclesSize>0)for(j=0;j<obstaclesSize;j++){if(y-commands[i]<=obstacles[j][1]&&x==obstacles[j][0]&&y>obstacles[j][1]){if(obstacles[j][1]>lr){lr=obstacles[j][1];}}}y=lr+1;printf("xy %d %d %d ",x,y,x*x+y*y);l[p++]=x*x+y*y;     }else if(d==3){lr=x-commands[i]-1;if(obstaclesSize>0)for(j=0;j<obstaclesSize;j++){if(x-commands[i]<=obstacles[j][0]&&y==obstacles[j][1]&&x>obstacles[j][0]){if(obstacles[j][0]>lr){lr=obstacles[j][0];}}}x=lr+1;printf("xy %d %d %d ",x,y,x*x+y*y);l[p++]=x*x+y*y;}}}int max =0;for(i=0;i<p;i++){if(l[i]>max){//  printf("l %d ",l[i]);max=l[i];}}return max;}

模拟行走机器人-c语言相关推荐

  1. 5911. 模拟行走机器人 II

    5911. 模拟行走机器人 II 给你一个在 XY 平面上的 width x height 的网格图,左下角 的格子为 (0, 0) ,右上角 的格子为 (width - 1, height - 1) ...

  2. leetcode -874 - 模拟行走机器人 - java版

    文章目录 题目 代码 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 < ...

  3. 【leetcode-python-22】874. 模拟行走机器人

    [leetcode-python-22]874. 模拟行走机器人 渣渣原始版(超时啦!) 官方版(57.64%) leetcode 874. 模拟行走机器人 渣渣原始版(超时啦!) class Sol ...

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

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

  5. LeetCode 2069. 模拟行走机器人 II(模拟)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个在 XY 平面上的 width x height 的网格图,左下角 的格子为 (0, 0) ,右上角 的格子为 (width - 1, heigh ...

  6. LeetCode 874. 模拟行走机器人(set)

    1. 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 <= x < ...

  7. 874. 模拟行走机器人

    2020-02-09 1.题目描述 根据一定的规则,模拟机器人行走. 2.解答 直接进行模拟即可. 3.代码 超时代码 #include <iostream> #include <a ...

  8. Leetcode 874. 模拟行走机器人 (模拟,一步一步的走)

    这里可以将obstacles存在set中,这里有一个坐标hash的问题,Python用tuple可以直接搞,C++需要自己实现hash算法.可以用set解决. class Solution:def r ...

  9. [leetcode] 874. 行走机器人模拟(周赛)

    874. 行走机器人模拟 模拟 描述方向时有个技巧:int[][] dx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; 分别存储机器人向上.右.下.左走时,坐标应该如何变 ...

  10. 机器人 c语言编程题,机器人机器人小高试题模拟题

    "小小科学家"广东省第五届少年儿童科学教育体验活动 小机器人竞赛模拟试题 小学高年级组个人赛 参赛编号 ______ 学校:_________ 班级:_____ 姓 ...

最新文章

  1. 一个具有多模型融合能力的网络或许是这样的
  2. 惠普的服务器改win7系统,惠普(HP)笔记本预装Win8改Win7系统BIOS设置教程
  3. 地图画指定区域_零基础学CAD绘制一张桌子为例,使亲们更好地熟悉三维绘图环境...
  4. java 并发锁_Java并发教程–锁定:内在锁
  5. linux jdk路径
  6. 科罗拉多州立大学计算机优势,盘点科罗拉多州立大学优势专业主要看排行榜
  7. 常见的oracle面试题及答案,Oracle精选面试题(附答案及分析)
  8. 苹果iPad mini 5蜂窝数据版上架:3896元起
  9. [Video Transformer] VTN: Video Transformer Network
  10. 图像识别用什么神经网络,图神经网络可以做什么
  11. HTML网页设计制作大作业-制作漫画网页设计6个页面(HTML+CSS+JavaScript)
  12. VUE项目中打印/转换图片打印
  13. 移动跨平台ReactNative动画组件Animated【14】
  14. 74HC08四路2输入与门
  15. ios修改根视图控制器
  16. jenkins第一次登陆密码
  17. 安利一个Visual Studio插件 Visual Assist 小番茄
  18. RK3399平台开发系列讲解(内存篇)15.31、内存调优参数
  19. vue 页面跳转404_出现404页面怎么办?应该如何处理404页面?
  20. 【Python】基础入门学习-B站莫烦老师

热门文章

  1. 站在巨人肩膀上——vb.net学习
  2. idea 无法新建工程
  3. Linux-nali解析IP归属信息
  4. python爬虫框架论文开题报告范文_研究思路及框架--开题报告
  5. 2007年度全世界最好的50个网站
  6. 计算机百科丨存储介质发展史
  7. 你租的房子遇 “坑” 了么?
  8. matlab2014如何获得hostid,hostid.c/获取主机标识
  9. 在计算机系统中 cpu指什么地方,在计算机中cpu指的是什么
  10. vue-事件修饰符-详解(.prevent .stop .once .capture .self)