Advertisement

上海计算机学会2023年12月月赛C++丙组T2移动复位

阅读量:

移动复位

内存限制: 256 Mb时间限制: 1000 ms

题目描述

在二维平面空间中存在一个特定的点。此点的初始位置定义为起点。接下来接收了一系列由大写字母组成的指令:

其中,R代表该点沿X轴正方向的长度单位向量;L代表该点沿X轴负方向的长度单位向量;U代表该点沿Y轴正方向的长度单位向量;D代表该点沿Y轴负方向的长度单位向量。

完成这些指令的操作后, 该点未必能直接返回到起始位置. 现在, 我们需要计算为了使该点回到起始位置, 最少需要添加多少条指令. 如果此点当前已处于起始位置, 则输出数值 0.

输入格式
  • 单个字符串:表示给定的指令序列
输出格式
  • 单个整数:表示最少还需添加最少指令才能回到起点。
数据范围
  • 字符数量不超过 100000
样例数据

输入:
LRUD
输出:
0
输入:
LLUU
输出:
4

解析:模拟法,求出最后的位置,计算结果,详见代码:

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
 int main() {
    
     string s;
    
     cin>>s;
    
     int len=s.length();
    
     int x=0;
    
     int y=0;
    
     for(int i=0;i<len;i++){
    
         if (s[i]=='R'){
    
             x++;
    
         }else if(s[i]=='L'){
    
             x--;
    
         }else if(s[i]=='U'){
    
             y++;
    
         }else{
    
             y--;
    
         }
    
     }
    
     cout<<abs(x)+abs(y);
    
     return 0;
    
 }

全部评论 (0)

还没有任何评论哟~