题解 | 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")
查看1道真题和解析
