模拟行走机器人-c语言
模拟行走机器人-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):
- 向北移动 4 个单位,到达 (0, 4)
- 右转
- 向东移动 3 个单位,到达 (3, 4)
距离原点最远的是 (3, 4) ,距离为 32 + 42 = 25
示例 2:
输入:commands = [4,-1,4,-2,4], obstacles = [[2,4]]
输出:65
解释:机器人开始位于 (0, 0):
- 向北移动 4 个单位,到达 (0, 4)
- 右转
- 向东移动 1 个单位,然后被位于 (2, 4) 的障碍物阻挡,机器人停在 (1, 4)
- 左转
- 向北走 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语言相关推荐
- 5911. 模拟行走机器人 II
5911. 模拟行走机器人 II 给你一个在 XY 平面上的 width x height 的网格图,左下角 的格子为 (0, 0) ,右上角 的格子为 (width - 1, height - 1) ...
- leetcode -874 - 模拟行走机器人 - java版
文章目录 题目 代码 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 < ...
- 【leetcode-python-22】874. 模拟行走机器人
[leetcode-python-22]874. 模拟行走机器人 渣渣原始版(超时啦!) 官方版(57.64%) leetcode 874. 模拟行走机器人 渣渣原始版(超时啦!) class Sol ...
- Leetcode题874、模拟行走机器人(Python题解)
问题: 题目来源:力扣(LeetCode) leetcode874.模拟行走机器人 难度:简单 分析: 逻辑模拟. 几个小技巧: 1.list是顺序查找,set是哈希查找,所以set会很快.set实际 ...
- LeetCode 2069. 模拟行走机器人 II(模拟)
文章目录 1. 题目 2. 解题 1. 题目 给你一个在 XY 平面上的 width x height 的网格图,左下角 的格子为 (0, 0) ,右上角 的格子为 (width - 1, heigh ...
- LeetCode 874. 模拟行走机器人(set)
1. 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 <= x < ...
- 874. 模拟行走机器人
2020-02-09 1.题目描述 根据一定的规则,模拟机器人行走. 2.解答 直接进行模拟即可. 3.代码 超时代码 #include <iostream> #include <a ...
- Leetcode 874. 模拟行走机器人 (模拟,一步一步的走)
这里可以将obstacles存在set中,这里有一个坐标hash的问题,Python用tuple可以直接搞,C++需要自己实现hash算法.可以用set解决. class Solution:def r ...
- [leetcode] 874. 行走机器人模拟(周赛)
874. 行走机器人模拟 模拟 描述方向时有个技巧:int[][] dx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; 分别存储机器人向上.右.下.左走时,坐标应该如何变 ...
- 机器人 c语言编程题,机器人机器人小高试题模拟题
"小小科学家"广东省第五届少年儿童科学教育体验活动 小机器人竞赛模拟试题 小学高年级组个人赛 参赛编号 ______ 学校:_________ 班级:_____ 姓 ...
最新文章
- 一个具有多模型融合能力的网络或许是这样的
- 惠普的服务器改win7系统,惠普(HP)笔记本预装Win8改Win7系统BIOS设置教程
- 地图画指定区域_零基础学CAD绘制一张桌子为例,使亲们更好地熟悉三维绘图环境...
- java 并发锁_Java并发教程–锁定:内在锁
- linux jdk路径
- 科罗拉多州立大学计算机优势,盘点科罗拉多州立大学优势专业主要看排行榜
- 常见的oracle面试题及答案,Oracle精选面试题(附答案及分析)
- 苹果iPad mini 5蜂窝数据版上架:3896元起
- [Video Transformer] VTN: Video Transformer Network
- 图像识别用什么神经网络,图神经网络可以做什么
- HTML网页设计制作大作业-制作漫画网页设计6个页面(HTML+CSS+JavaScript)
- VUE项目中打印/转换图片打印
- 移动跨平台ReactNative动画组件Animated【14】
- 74HC08四路2输入与门
- ios修改根视图控制器
- jenkins第一次登陆密码
- 安利一个Visual Studio插件 Visual Assist 小番茄
- RK3399平台开发系列讲解(内存篇)15.31、内存调优参数
- vue 页面跳转404_出现404页面怎么办?应该如何处理404页面?
- 【Python】基础入门学习-B站莫烦老师
热门文章
- 站在巨人肩膀上——vb.net学习
- idea 无法新建工程
- Linux-nali解析IP归属信息
- python爬虫框架论文开题报告范文_研究思路及框架--开题报告
- 2007年度全世界最好的50个网站
- 计算机百科丨存储介质发展史
- 你租的房子遇 “坑” 了么?
- matlab2014如何获得hostid,hostid.c/获取主机标识
- 在计算机系统中 cpu指什么地方,在计算机中cpu指的是什么
- vue-事件修饰符-详解(.prevent .stop .once .capture .self)