题目解析:

对于本题主要的核心是对于一个指令字符串如“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,否则根据题意,该障碍点无效)能否到达,在所有有必要判断的障碍点都不会碰到后再判断终点能否到达

本题代码:

 class Solution {
public:
int min(int x, int y){
return x < y ? x : y;
}
bool judge(string command, int x_num, int y_num, int x, int y){
int temp = min(x/x_num, y/y_num); //temp记录最小公倍数
x = x - x_num*temp; //x记录的是R
y = y - y_num*temp; //y记录的是U
//此时的x和y代表终点相对于第一次循环的位置
if(x == && y == ) return true;
else{
int len_cmd = command.size();
for(int i = ; i < len_cmd; i++){
if(command[i] == 'U'){
y--;
if(y < ) return false;
}else{
x--;
if(x < ) return false;
}
if(x == && y == ) return true;
}
}
return true;
}
bool robot(string command, vector<vector<int>>& obstacles, int x, int y) {
int len_cmd = command.size();
int x_1 = ;
int y_1 = ;
//统计第一轮循环能走到的地方
for(int i = ; i < len_cmd; i++){
if(command[i] == 'R'){
x_1++;
}else{
y_1++;
}
}
//把每一个障碍点(该障碍点的x和y都要小于终点的x和y)当做是终点求能否到达 能到达则return false
int len_obs = obstacles.size();
for(int i = ; i < len_obs; i++){
if(obstacles[i][] <= x && obstacles[i][] <= y){
//能到达则return false
if(judge(command, x_1, y_1, obstacles[i][], obstacles[i][]) == true) return false;
}
}
//如果所有的终点之内的障碍点都不会到达 则直接判断终点是否可以到达
if(judge(command, x_1, y_1, x, y) == true) return true;
else return false;
}
};

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

  1. [LeetCode]LCP 01. 猜数字

    小A 和 小B 在玩猜数字.小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜.他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的guess数组为 小 ...

  2. [LeetCode]LCP 06. 拿硬币

    桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中.我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数. 示例 1: 输入:[4,2,1] 输出:4 解释:第一堆力扣 ...

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

    30. 与所有单词相关联的字串 这个题做了大概两个小时左右把...严重怀疑leetcode的judge机器有问题.同样的代码交出来不同的运行时长,能不能A题还得看运气? 大致思路是,给words生成一 ...

  4. openfire的组件(Component)开发

    在之前的文章<Openfire阶段实践总结>中提到过一种openfire的扩展模式Compoent.本文将主要探讨对这种模式的应用与开发方法. 内部与外部组件介绍 在openfire中的许 ...

  5. 【leetcode】LCP 1. Guess Numbers

    题目如下: 小A 和 小B 在玩猜数字.小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜.他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的gues ...

  6. 【LeetCode】LCP 07. 传递信息

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS 日期 题目地址:https://leetcod ...

  7. 【LeetCode】LCP 06. 拿硬币

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 替换 日期 题目地址:https://leetcode ...

  8. LeetCode之LCP(Longest Common Prefix)问题

    这个也是简单题目.可是关键在于题意的理解. 题目原文就一句话:Write a function to find the longest common prefix string amongst an ...

  9. 【leetcode】LCP 2. 分式化简

    题目如下: 有一个同学在学习分式.他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式.在本题中,所有系数都是大于等于0的整数. 输入的cont代表连分数的系数(cont[0]代表上 ...

随机推荐

  1. Node.js实现PC端类微信聊天软件(四)

    Github StackChat 学习回顾 React和Electron结合 TypeError: fs.existsSync is not a function 在React组件里引入electro ...

  2. centos7安装rsync及两台机器进行文件同步

    安装及配置 yum -y install rsync #启动rsync服务 systemctl start rsyncd.service systemctl enable rsyncd.service ...

  3. scala 类,伴生对象

    1.属性的定义 编写一个PersonS类,并在其中定义一些属性,通过PersonS.scala 编译后的情况查看,可以知道不同修饰符修饰的属性分别会生成什么方法(set,get) package co ...

  4. B+树比B树更适合实际应用中操作系统的文件索引和数据库索引

    B+树比B树更适合实际应用中操作系统的文件索引和数据库索引 为什么选择B+树作为数据库索引结构?   背景 首先,来谈谈B树.为什么要使用B树?我们需要明白以下两个事实: [事实1]不同容量的存储器, ...

  5. Dockerfile HEALTHCHECK健康检查

    Dockerfile中使用HEALTHCHECK的形式有两种: 1.HEALTHCHECK [options] CMD command 2.HEALTHCHECK NODE 意思是禁止从父镜像继承的H ...

  6. LeetCode 453. 最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements) 47

    453. 最小移动次数使数组元素相等 453. Minimum Moves to Equal Array Elements 题目描述 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移 ...

  7. cf-786B区间图最短路

    https://www.cnblogs.com/31415926535x/p/11611801.html 偶然看到的这个东西,可以说是第一次见到图论+数据结构的题了,,这题代码很简单,细节处理一下就没 ...

  8. Delphi编码与签名【URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384和HMAC-SHA512签名】

    作者QQ:(648437169) 点击下载➨delphi编码与签名 [Delphi编码与签名]URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1.HMAC-SHA224.HMAC ...

  9. C++实现 企业信息管理系统

    2.1总体需求 ​ 2.2管理需求 ​ ​ 3.总体架构 ​ 由于代码量比较大,请移步GitHub或码云 码云:传送门 , GitHub:传送门 话不多说,直接上效果 我是在Linux Ubuntu1 ...

  10. MongoDB 概述

    一.概述: 1.NoSQL数据库(非关系型数据库) 2.文档存储 3.格式类似JSON,BSON 4.最终一致性(非ACID) , CAP定理(C 一致性,A 高可用,P 分区性) 5.高可扩展性(分 ...