题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <stdio.h> #include <string.h> #define hg(i,j) (str[i]==j)&&(str[i+1]>='0')&&(str[i+1]<='9')&&(str[i+2]>='0')&&(str[i+2]<='9')&&(str[i+3]==';')&&(str[i-1]==';') #define hg2(i,j) (str[i]==j)&&(str[i+1]>='0')&&(str[i+1]<='9')&&(str[i+2]==';')&&(str[i-1]==';') int main() { int l; int x,y; x=y=0; char str1[10010]={0}; scanf("%[^\n]",str1); char str[10012]={0}; str[0]=';'; l=strlen(str1); int l2=strlen(str); str[l2]=';'; for(int i=0;i<l;i++) { str[i+1]=str1[i]; } for(int i=0;i<=l;i++) { if(hg(i,'A')) { int m=0; m=(str[i+1]-'0')*10+(str[i+2]-'0'); x=x-m; } if(hg(i,'D')) { int m=0; m=(str[i+1]-'0')*10+(str[i+2]-'0'); x=x+m; } if(hg(i,'W')) { int m=0; m=(str[i+1]-'0')*10+(str[i+2]-'0'); y=y+m; } if(hg(i,'S')) { int m=0; m=(str[i+1]-'0')*10+(str[i+2]-'0'); y=y-m; } if(hg2(i,'A')) { int m=0; m=(str[i+1]-'0'); x=x-m; } if(hg2(i,'D')) { int m=0; m=(str[i+1]-'0'); x=x+m; } if(hg2(i,'W')) { int m=0; m=(str[i+1]-'0'); y=y+m; } if(hg2(i,'S')) { int m=0; m=(str[i+1]-'0'); y=y-m; } } printf("%d,%d",x,y); }