首先需要对字符串进行分割,把每一条指令放进vector;再对每条指令进行检查,不合法直接忽略,合法则进行模拟即可~
#include <bits/stdc++.h>
using namespace std;
void solve() {
string s;
cin >> s;
vector<string> m;
size_t j = 0, i = 0;
while (1) {
i = s.find(";", i + 1);
//cerr << i << endl;
if (i == string::npos) {
m.push_back(s.substr(j, s.size() - j - 1));
break;
} else {
m.push_back(s.substr(j, i - j));
}
//cerr << m.back() << endl;
j = i + 1;
}
auto check = [](string& s) {
if (s.size() <= 1) return false;
if (s[0] != 'A' && s[0] != 'W' && s[0] != 'S' && s[0] != 'D') return false;
for (int i = 1; i < s.size(); ++i) {
if (!isdigit(s[i])) return false;
}
return true;
};
int x = 0, y = 0;
for (auto& s : m) {
if (!check(s)) continue;
int d = stoi(s.substr(1));
if (s[0] == 'W') y += d;
else if (s[0] == 'S') y -= d;
else if (s[0] == 'A') x -= d;
else x += d;
}
cout << x << "," << y;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}

京公网安备 11010502036488号