机器人能否回到原点

114 阅读2分钟

题目:在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。

如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。

注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。

思路:看到这个题目的名字我就知道肯定很简单,什么简单题里面还可以扯上机器人,唬谁呢(最近做毕业设计用到机器学习里面的算法,才是真的让人心力交瘁)

言归正传,说说我的解题思路吧,这个题就是在坐标轴模拟上下左右的移动,看最后是否返回原点,暴力解法就是抵消思路,左右相互抵消,上下相互抵消,如果全部抵消,就可以回到原点,否则不能回到原点。

声明四个变量上(count_U)下(count_D)左(count_L)右(count_R),当move(i)移动步数时在对应变量相加,当move全部移动完,比较左右,上下数值是否一致,若一致,返回true,否则返回false。

bool judgeCircle(string moves) {
        int count_L = 0;
        int count_R = 0;
        int count_U = 0;
        int count_D = 0;
        for(int i = 0;i < moves.size();i++){
            if(moves[i] == 'U') count_U++;
            if(moves[i] == 'D') count_D++;
            if(moves[i] == 'L') count_L++;
            if(moves[i] == 'R') count_R++;
        }
        if(count_L == count_R && count_D == count_U) return true;
        else return false;
    }

一遍过!这是我第一次一口气写完代码,运行一遍过(每天都在变好,真好).提交记录如下:

image-20230423212306084.png

总结:今天的题目还是很简单的,简单的数学逻辑模拟一下就可以解决。