Advertisement

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.绝对值可以表示距离(表示方法:

|0-x|

——————————————————————————

L相当于

x-1

,R相当于

x+1

,U相当于

y+1

,D相当于

y-1

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

eft | 0-x ight |+eft | 0-y ight |

代码实现
复制代码
 #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
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/OLZbEF0R6rcNXpdigWjhwa4KxGAy.png)

全部评论 (0)

还没有任何评论哟~