HJ17 坐标移动

简介: HJ17 坐标移动

题目

题目连接

示例1

输入:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出:
10,-10

示例2

输入:
ABC;AKL;DA1;
输出:
0,0

解题

方法一:字符串处理

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include<unordered_map>
using namespace std;
unordered_map<char,pair<int,int>> mp={
    {'A',{-1,0}},
    {'W',{0,1}},
    {'S',{0,-1}},
    {'D',{1,0}}
};
//执行移动命令
void doCommand(pair<int,int>& p,string& command){
    char comm='\0';
    if(mp.count(command[0])){
        comm=command[0];
    }
    if(comm=='\0') return;//首字母必须要是A、W、D、S
    int i=1,n=command.size(),num=0;
    while(i<n&&command[i]>='0'&&command[i]<='9'){
        num=num*10+command[i]-'0';
        i++;
    }
    if(i!=n) return;//末尾必须要是数字
    p.first+=mp[comm].first*num;
    p.second+=mp[comm].second*num;
}
int main(){
    string s;
    getline(cin,s);
    int i=0,n=s.size();
    pair<int,int> point;
    while(i<n){
        int start=i;
        while(i<n&&s[i]!=';') i++;
        string command=s.substr(start,i-start);//读取出命令
        doCommand(point,command);//执行命令
        i++;
    }
    printf("%d,%d",point.first,point.second);
}
相关文章
ABB PM866K01 3BSE050198R1 相对于某个坐标系的牵引力方向
ABB PM866K01 3BSE050198R1 相对于某个坐标系的牵引力方向
ABB PM866K01 3BSE050198R1 相对于某个坐标系的牵引力方向
|
算法
AC牛客 BM99 顺时针旋转矩阵
AC牛客 BM99 顺时针旋转矩阵
93 0
AC牛客 BM99 顺时针旋转矩阵
2021杭电多校第八场 HDU7063-Square Card(求两圆相交面积)
2021杭电多校第八场 HDU7063-Square Card(求两圆相交面积)
82 0
2021杭电多校第八场 HDU7063-Square Card(求两圆相交面积)
CF191C——Fools and Roads(树上边差分+LCA)
CF191C——Fools and Roads(树上边差分+LCA)
131 0
|
定位技术 数据安全/隐私保护 芯片

热门文章

最新文章