题解 | #坐标移动#
坐标移动
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")
SHEIN公司福利 971人发布