题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <cmath> #include <iostream> #include <vector> using namespace std; bool isDir(char c) { return c == 'A' || c == 'D' || c == 'W' || c == 'S'; } bool isNum(char c) { return c >= '0' && c <= '9'; } int main() { char c; int x = 0; int y = 0; int l = 0; vector<char> s; while (cin >> c) { // 注意 while 处理多个 case if (c == ';') { if (l == 3) { if (isDir(s[0]) && isNum(s[1]) && isNum(s[2])) { int dis = (s[1] - '0') * 10 + (s[2] - '0'); if (s[0] == 'A') { x -= dis; } else if (s[0] == 'D') { x += dis; } else if (s[0] == 'W') { y += dis; } else if (s[0] == 'S') { y -= dis; } } } else if (l == 2) { if (isDir(s[0]) && isNum(s[1])) { int dis = (s[1] - '0'); if (s[0] == 'A') { x -= dis; } else if (s[0] == 'D') { x += dis; } else if (s[0] == 'W') { y += dis; } else if (s[0] == 'S') { y -= dis; } } } s.clear(); l = 0; } else { s.push_back(c); l++; } } cout << x << ',' << y << endl; } // 64 位输出请用 printf("%lld")