题解 | 坐标移动
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
using namespace std;
void gogogo(string red, int &a, int &b){
int n = red.size(), step = 0;
if(n <= 1 || n > 3) return;
if(n == 2 && (red[1] >= '0' && red[1] <= '9')){
step = red[1] - '0';
}else if( n == 3 && (red[1] >= '0' && red[1] <= '9') && (red[2] >= '0' && red[2] <= '9')){
step = (red[1] - '0') * 10 + red[2] - '0';
}else{
return;
}
switch (red[0]) {
case 'W': b = b + step; break;
case 'A': a = a - step; break;
case 'S': b = b - step; break;
case 'D': a = a + step; break;
default: break;
}
}
void yidong(string s, int &a, int &b){
int i = 0, p = 0;
while(i < s.size()) {
while(s[i] != ';')i++;
string red = s.substr(p , i - p);
gogogo(red, a, b);
i++;
p = i;
}
}
int main() {
int a = 0, b = 0;
string s;
while (cin >> s) { // 注意 while 处理多个 case
yidong(s, a, b);
cout << a << "," << b << endl;
}
}
// 64 位输出请用 printf("%lld")
