#牛客春招刷题训练营# 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")