上海计算机学会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)
 还没有任何评论哟~ 
