题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

#include <bits/stdc++.h>
#include <iostream>
using namespace std;
// 移动坐标轴
int main() {
    string str;
    while (getline(cin, str)) {  // 注意 while 处理多个 case
        vector<string> vec;
        string temp;
        // 把所有坐标放进一个数组中
        for (int i = 0; i < str.size(); i++) {
            if (str[i] == ';') {
                vec.push_back(temp);
                temp.clear();
                continue;
            } else {
                temp += str[i];
            }
        }
        int xy[2] = {0, 0};
        for (int i = 0; i < vec.size(); i++) {
            // 判定坐标合法性
            if (vec[i].size() > 3 || vec[i].size() <= 1 || vec[i][1] == 'A' ||
                vec[i][1] == 'D' || vec[i][1] == 'W' || vec[i][1] == 'S' ||
                vec[i][2] == 'A' || vec[i][2] == 'D' || vec[i][2] == 'W' ||
                vec[i][2] == 'S') {
                continue;
            }
            string tstr = vec[i];
            // 坐标加减
            int num = 0;
            if (tstr[0] == 'A') {
                num = stoi(tstr.substr(1, 2));
                xy[0] -= num;
                tstr.clear();
            } else if (tstr[0] == 'D') {
                num = stoi(tstr.substr(1, 2));
                xy[0] += num;
                tstr.clear();
            } else if (tstr[0] == 'S') {
                num = stoi(tstr.substr(1, 2));
                xy[1] -= num;
                tstr.clear();
            } else if (tstr[0] == 'W') {
                num = stoi(tstr.substr(1, 2));
                xy[1] += num;
                tstr.clear();
            }
        }
        cout << xy[0] << "," << xy[1] << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务