题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <stdlib.h>
#include<string.h>
int main(void)
{
char cmd[10000];
gets(cmd);
int len = strlen(cmd);
int x=0, y=0;
int i=0;
//printf("%s %d\n", cmd, len);
while(i < len-1){ // i j 指令的开头与结尾
if(cmd[i] == ' ' || cmd[i] == ';'){ //跳过空格与开头的 ;号
i++;
continue;
}
int j = i+1;
while(j < len){
if(cmd[j] == ';')
break;
j++;
}
//printf("%d %d\n",i,j);
char s;
int n = i;
for(n; n<j; n++){
//printf("n %d\n",n);
if(n == i){//wasd判断
if(cmd[n] == 'A' || cmd[n] == 'W' || cmd[n] == 'S' || cmd[n] == 'D'){
s = cmd[n];
continue;
}
i = j+1;
break;
}
if(cmd[n] < '0' || cmd[n] > '9'){//判断指令内部是否有错误
i = j+1;
break;
}
}
int step = 0;
if(n == j){//i+1-j 为步数
n--;
int e = 0;
for(n; n>i; n--){ //计算步数
step += (cmd[n]-'0') * pow(10, e++);
}
if(s == 'A'){
x -= step;
}else if(s == 'S'){
y -= step;
}else if(s == 'D'){
x += step;
}else{
y += step;
}
//printf("%c,%d\n",s,step);
}
i = j+1;
}
printf("%d,%d",x,y);
return 0;
}