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