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);
}
相关文章
|
1月前
|
C++
【PTA】​L1-048 矩阵A乘以B​ (C++)
【PTA】​L1-048 矩阵A乘以B​ (C++)
45 0
【PTA】​L1-048 矩阵A乘以B​ (C++)
|
8月前
华为机试HJ17:坐标移动
华为机试HJ17:坐标移动
|
算法
AC牛客 BM99 顺时针旋转矩阵
AC牛客 BM99 顺时针旋转矩阵
66 0
AC牛客 BM99 顺时针旋转矩阵
|
机器学习/深度学习 C语言
PTA 6-4求n×n方阵四边元素之和
PTA第一节 矩阵四边元素之和
322 0
PTA 6-4求n×n方阵四边元素之和
AcWing 662. 点的坐标
AcWing 662. 点的坐标
42 0
AcWing 662. 点的坐标
【1105】Spiral Matrix (25分)【螺旋矩阵】
【1105】Spiral Matrix (25分)【螺旋矩阵】 【1105】Spiral Matrix (25分)【螺旋矩阵】
106 0