YACS(上海计算机学会竞赛平台)2023年12月月赛——移动复位
发布时间
阅读量:
阅读量
移动复位
内存限制: 256 Mb时间限制: 1000 ms
题目描述
在二维空间中存在一个点。我们将其初始位置定义为起始点。随后,在这个平面上的一系列指令会被这个点执行:每个指令都是一个大写字母的形式。
R代表该点沿着 X 轴正向移动一个单位长度;L代表该点沿着 X 轴负向移动一个单位长度;U代表该点沿着 Y 轴正向移动一个单位长度;D代表该点沿着 Y 轴负向移动一个单位长度。
执行完这些指令后, 该位置未必能返回原出发点. 请计算最少需要添加多少条指令, 才能使这个位置回归原出发点? 如果该位置已经抵达原出发点, 则结果应为零.
输入格式
- 单个字符串:表示给定的指令序列
输出格式
- 单个整数:表示最少还需添加最少指令才能回到起点。
数据范围
- 字符数量不超过 100000
样例数据
输入1:
LRUD
输出1:
0
输入2:
LLUU
输出2:
4
思考过程
可以运用初中的知识:
1.平面直角坐标系相当于两个互相垂直的数轴
2.绝对值可以表示距离(表示方法:

)
——————————————————————————
L相当于

,R相当于

,U相当于

,D相当于

。
操作完上下左右后,最后的答案就是

。
代码实现
#include <bits/stdc++.h>
using namespace std;
int x, y;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.length(); i++) {
if (s[i] == 'R')
x++;
if (s[i] == 'L')
x--;
if (s[i] == 'U')
y++;
if (s[i] == 'D')
y--;
}
cout << abs(0 - x) + abs(0 - y);
return 0;
}
cpp

全部评论 (0)
还没有任何评论哟~
