题解 | #坐标移动#

坐标移动

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;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务