题解 | #坐标移动#

坐标移动

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

#include <iostream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

pair<int, int> parseCoordinate(const string& coord) {
    pair<int, int> result = {0, 0};
    if (coord.size() < 2 || coord.size() > 3 || (coord.size() == 3 && !isdigit(coord[2]))) {
        return result;
    }
    char direction = coord[0];
    int distance = stoi(coord.substr(1));
    switch (direction) {
        case 'A':result.first -= distance; break;
        case 'D':result.first += distance; break;
        case 'W':result.second += distance; break;
        case 'S':result.second -= distance; break;
        default: // Invalid direction
            return result;
    }
    return result;
}

int main() {
    string input;
    getline(cin, input);
    pair<int, int> currentPos = {0, 0};
    stringstream ss(input);
    string token;
    while (getline(ss, token, ';')) {
        pair<int, int> newPos = parseCoordinate(token);
        if (newPos != make_pair(0, 0)) {
            currentPos.first += newPos.first;
            currentPos.second += newPos.second;
        }
      }
    cout << currentPos.first << "," << currentPos.second << endl;
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务