#牛客春招刷题训练营# https://www.nowcoder.com/discuss/727521113110073344
模拟即可,只有四个方向,遇到分号表示该指令结束,判断每个指令是否合理,合理就进行移动,最后重置当前状态
#include <iostream>
using namespace std;
int main() {
int x=0,y=0;
string s;
cin >> s;
bool f = true;
char op = '0';
int d = 0;
for(int i = 0 ; i < s.size() ; i ++) {
if (s[i]>='A' && s[i]<='Z') {
if(op == '0') op = s[i];
else f = false;
}else if(s[i]>='0' && s[i]<='9'){
d = d*10 + s[i]-'0';
}
if(s[i] == ';') {
if (d > 99 || d < 1 || !f) {
d = 0;
op = '0';
f = true;
continue;
}
if(op == 'A') {
x -= d;
}else if(op == 'D') {
x += d;
}else if(op == 'W') {
y += d;
}else if(op == 'S') {
y -= d;
}
d = 0;
op = '0';
f = true;
// cout<<op<<" "<<d<<" "<<x<<" "<<y<<endl;
}
}
cout << x << ',' << y <<endl;
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号