题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
using namespace std;
int IS_ADWS(char c){
switch (c) {
case 'A':
return 13;
break;
case 'D':
return 14;
break;
case 'W':
return 15;
break;
case 'S':
return 16;
break;
case ';':
return 12;
break;
default:
if(c>='0'&&c<='9')
return c-'0';
else return 11;
}
}
int main() {
string s;
int flag;
int x=0;
int y=0;
getline(cin,s);
for(int i=0;i<s.size();++i){
if(IS_ADWS(s[i])==11){
while (IS_ADWS(s[++i])!=12);// 一直跳过
flag=0;
}
int temp_sum = 0;
while(IS_ADWS(s[i])!=12){
if(IS_ADWS(s[i])>12){
if(flag>12){
while (IS_ADWS(s[++i])!=12);// 一直跳过
flag=0;
}else if (flag==0) {
flag=IS_ADWS(s[i++]);
}
}else {
temp_sum =temp_sum*10+IS_ADWS(s[i++]);
}
}
if(flag>0){
switch(flag){
case 13:
x-=temp_sum;
break;
case 14:
x+=temp_sum;
break;
case 15:
y+=temp_sum;
break;
case 16:
y-=temp_sum;
break;
}
// cout<<flag<<' '<<temp_sum<<endl;;?
}
flag=0;
}
cout<<x<<','<<y<<endl;
}
// 64 位输出请用 printf("%lld")

叮咚买菜工作强度 226人发布