题解 | C++ #坐标移动#(简单逻辑,又臭又长。)
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <bits/stdc++.h> using namespace std; void calculate(vector<long>& result, string& s, int start, int end){ if((end - start) == 2){ if(s[start+1] >= '0' && s[start+1] <= '9'){ if(s[start+2] >= '0' && s[start+2] <= '9'){ if(s[start] == 'A'){ result[0] -= ((s[start+1] - '0')*10 + (s[start+2] - '0')); }else if(s[start] == 'S'){ result[1] -= ((s[start+1] - '0')*10 + (s[start+2] - '0')); }else if(s[start] == 'W'){ result[1] += ((s[start+1] - '0')*10 + (s[start+2] - '0')); }else if(s[start] == 'D'){ result[0] += ((s[start+1] - '0')*10 + (s[start+2] - '0')); } } } }else if((end - start) == 1){ if(s[start+1] >= '0' && s[start+1] <= '9'){ if(s[start] == 'A'){ result[0] -= (s[start+1] - '0'); }else if(s[start] == 'S'){ result[1] -= (s[start+1] - '0'); }else if(s[start] == 'W'){ result[1] += (s[start+1] - '0'); }else if(s[start] == 'D'){ result[0] += (s[start+1] - '0'); } } } } int main() { vector<long> result; result.push_back(0); result.push_back(0); string s; cin >> s; int start = 0; int i = 0; for(; i <= s.size(); ++i){ if(s[i] == ';' ){ calculate(result, s, start, i-1); start = i + 1; } } cout << result[0] << ','<< result[1]; } // 64 位输出请用 printf("%lld")