LeetCode LCP 3 机器人大冒险

题目解析:

对于本题主要的核心是对于一个指令字符串如“RURUU”,如果我们假设它的终点坐标为(8,8),其实只要统计指令字符串中的R的个数和U的个数(对于我给出的例子而言,num_R == 2,num_U == 3),显然不管我们是否能到达终点,这条指令至少要走不止一遍才有可能,那么我们只要将它在达到终点前必走的x轮减去(对于我给出的例子而言x == min(8 / 2 ,8 / 3)== 2,则忽略中间走的轮数,就能把终点的位置转化为(4,2)),则就能求出最后那不足一轮的情况下需要U多少个,R多少个才能到达终点,然后遍历指令字符串,一步一步模拟即可,一旦超过终点的x或者y则永远不可能到达,对于障碍点来说也是一样,把它们当作目标点来求能否到达即可,这个判断的过程可以单独写作一个函数更为方便。解题时,我们先判断障碍点(x <= 终点x,y <= 终点y,否则根据题意,该障碍点无效)能否到达,在所有有必要判断的障碍点都不会碰到后再判断终点能否到达

本题代码:

 1 class Solution {
 2 public:
 3     int min(int x, int y){
 4         return x < y ? x : y;
 5     }
 6     bool judge(string command, int x_num, int y_num, int x, int y){
 7         int temp = min(x/x_num, y/y_num);       //temp记录最小公倍数
 8         x = x - x_num*temp;      //x记录的是R
 9         y = y - y_num*temp;      //y记录的是U
10         //此时的x和y代表终点相对于第一次循环的位置
11         if(x == 0 && y == 0) return true;
12         else{
13             int len_cmd = command.size();
14             for(int i = 0; i < len_cmd; i++){
15                 if(command[i] == ‘U‘){
16                     y--;
17                     if(y < 0) return false;
18                 }else{
19                     x--;
20                     if(x < 0) return false;
21                 }
22                 if(x == 0 && y == 0) return true;
23             }
24         }
25         return true;
26     }
27     bool robot(string command, vector<vector<int>>& obstacles, int x, int y) {
28         int len_cmd = command.size();
29         int x_1 = 0;
30         int y_1 = 0;
31         //统计第一轮循环能走到的地方
32         for(int i = 0; i < len_cmd; i++){
33             if(command[i] == ‘R‘){
34                 x_1++;
35             }else{
36                 y_1++;
37             }
38         }
39         //把每一个障碍点(该障碍点的x和y都要小于终点的x和y)当做是终点求能否到达 能到达则return false
40         int len_obs = obstacles.size();
41         for(int i = 0; i < len_obs; i++){
42             if(obstacles[i][0] <= x && obstacles[i][1] <= y){
43                 //能到达则return false
44                 if(judge(command, x_1, y_1, obstacles[i][0], obstacles[i][1]) == true) return false;
45             }
46         }
47         //如果所有的终点之内的障碍点都不会到达 则直接判断终点是否可以到达
48         if(judge(command, x_1, y_1, x, y) == true) return true;
49         else return false;
50     }
51 };

原文地址:https://www.cnblogs.com/findview/p/11616836.html

时间: 2024-11-08 19:53:45

LeetCode LCP 3 机器人大冒险的相关文章

leetcode LCP 3. 机器人大冒险 java

题目: 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种: U: 向y轴正方向移动一格R: 向x轴正方向移动一格.不幸的是,在 xy 平面上还有一些障碍物,他们的坐标用obstacles表示.机器人一旦碰到障碍物就会被损毁. 给定终点坐标(x, y),返回机器人能否完好地到达终点.如果能,返回true:否则返回false. 示例 1: 输入:command = "URR",

爆了|第七代历途机器人大剧透

2018年10月19日,历途公司应邀参加了索迪斯开放创新日活动,将历途机器人的新进展向索迪斯及其重要合作伙伴做了展示,得到众多国内外客户的一致关注与认可,对于机器人的产品化和市场化都起到了加速器的作用. 请输入图片描述 Leatu-Robot 历途公司自主研发的高楼外墙清洗机器人可以代替人工提供更加专业.高效.安全的外墙清洁服务与方案.对于合作伙伴们来说可以有效解决人工清洁成本高.安全性低.受客观环境影响大的诸多痛点. 第七代高楼外墙清洗机器人有哪些亮点呢? 1.机器人通过垂直立面的负压强力吸附

[leetcode] 30. 与所有单词相关联的字串(cn第653位做出此题的人~)

30. 与所有单词相关联的字串 这个题做了大概两个小时左右把...严重怀疑leetcode的judge机器有问题.同样的代码交出来不同的运行时长,能不能A题还得看运气? 大致思路是,给words生成一关于s的字典,用来记录每个word在s中出现的所有位置,注意可能会出现相同的word.然后递归枚举words的排列情况,一一校验是否符合条件(即连在一起).用到了递归+记忆化搜索+kmp+几个剪枝 一直最后几个测试用例上TLE,囧啊,甚至一度怀疑是不是还有更优的做法. 然后开始考虑剪枝: 记忆化搜索

有感:未来机器人与3D融合

有幸于10月27日参加百度百家组织的"The BigTalk"第五弹,主题为"机器人重塑未来生活".主讲的三位"大神"大名鼎鼎,在圈内颇有影响力.王海峰,百度技术副总裁,演讲题目为:<让机器像人一样思考>:胡迪·利普森(HodLipson),康奈尔大学创意机器人实验室主任,福布斯称他为"世界上最牛的七位机器人.大数据专家",演讲题目为:<机器人大挑战>:丹妮拉·鲁斯(DanielaRus),MIT电脑与

人工智能机器人“能文能武”,但还差一些感性与思考

[博客园]近年,人工智能技术愈发火热,机器人正在实现越来越多的功能.据<华尔街日报>消息,NII (日本国立情报学研究所)最新研发的人工智能(AI)技术已经可以在日本高考中考取511分的成绩.日本大学入学考试总分为950分,而日本全国高考平均水平为416分,这就意味着这款“考试机器人”有80%的几率被日本441家私立大学及33所全国性大学录取.无独有偶,在即将于北京召开的2015世界机器人大会上,将会举办机器人足球明星表演赛,届时,RoboCup机器人足球世界杯的国际.国内冠军联队都将登场,展

(转载)PPP协议规范

PPP协议规范 1 介绍 PPP是为在同等单元之间传输数据包这样的简单的链路而设计的.这种链路提供全双工操作,并按照顺序传递数据包.(人们)有意让PPP为基于各种主机.网桥和路由器的简单连接提供一种共通的解决方案. 封装: PPP封装提供了不同网络层协议同时通过统一链路的多路技术.精心的设计PPP封装,使其保有对常用支持硬件的兼容性.当使用默认的类HDLC帧(HDLC-like framing)时,仅需要8个额外的字节,就可以形成封装.在带宽需要付费时,封装和帧可以减少到2或4个字节.为了支持高

2015世界机器人大会-见闻录

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50043013 博主地址是:http://blog.csdn.net/freewebsys 网站: http://www.worldrobotconference.com/ 直接上图: 陪伴机器人,机器身上有多个传感器,可以感知触摸. 这个比较大,但是没有通电,不知道啥样. 8个螺旋桨+顶部的2个螺旋桨. 线圈缠绕的很多很大,但是裸露在外面不知道下雨有问题不? 机器臂 kawas

openfire的组件(Component)开发

在之前的文章<Openfire阶段实践总结>中提到过一种openfire的扩展模式Compoent.本文将主要探讨对这种模式的应用与开发方法. 内部与外部组件介绍 在openfire中的许多插件都实现了Compoent,Compoent的灵活性在于它可以通过对特定的二级子域包进行处理.在XMPP协议中最为明显的使用场景就是群聊,这就是一个典型的例子.看看openfire中的聊天室JID都是什么格式:[email protected],很明这里多了一个conference.对比用户的JID:[e

委托学习笔记1:委托的基本使用

一.引子 在正式说委托前,我先给一个例子,然后引出后面要说的委托. 很简单,就是一个机器人打招呼的. 代码清单1.1: class Robot { public void GreetByChinese(string name) { Console.WriteLine("你好," + name + "!"); } public void GreetByEnglish(string name) { Console.WriteLine("Hello,"