思路

暴力解法,,,后续思考是否有其他解法

  1. 得到输入字符串
  2. 找到“;”号后作为1次判断
  3. 如果该字符串第1位不是ASDW,第2三位不是数字,则跳过
  4. 符合条件:A:x减去-数字,D:x加上数字,W:y加数字,S:y减去数字
  5. 注意: 字母后面可能是1位数,也可能是2位数,注意分别处理
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
    char str[100000];
    char strTmp[100000] = {'0'};

    gets(str);
    int len = strlen(str);
    int j = 0;
    int x = 0;
    int y = 0;
    for (int i = 0; i < len; i++) {
        strTmp[j++] = str[i];
        if (str[i] == ';') {
            if (j == 4) {
                j = 0;
                if (strTmp[0] == 'A' || strTmp[0] == 'D' || strTmp[0] == 'W' ||
                        strTmp[0] == 'S') {
                    if (strTmp[1] >= '0' && strTmp[1] <= '9') {
                        if (strTmp[2] >= '0' && strTmp[2] <= '9') {
                            switch (strTmp[0]) {
                                case 'A':
                                    x = x - ((strTmp[1] - '0') * 10 + (strTmp[2] - '0'));
                                    break;
                                case 'D':
                                    x = x + ((strTmp[1] - '0') * 10 + (strTmp[2] - '0'));
                                    break;
                                case 'W':
                                    y = y + ((strTmp[1] - '0') * 10 + (strTmp[2] - '0'));
                                    break;
                                case 'S':
                                    y = y - ((strTmp[1] - '0') * 10 + (strTmp[2] - '0'));
                                    break;
                            }
                        }
                    }
                }
            } else if(j==3){
            	
            	j = 0;
                if (strTmp[0] == 'A' || strTmp[0] == 'D' || strTmp[0] == 'W' ||
                        strTmp[0] == 'S') {
                    if (strTmp[1] >= '0' && strTmp[1] <= '9') {
                            switch (strTmp[0]) {
                                case 'A':
                                    x = x - ((strTmp[1] - '0'));
                                    break;
                                case 'D':
                                    x = x + ((strTmp[1] - '0'));
                                    break;
                                case 'W':
                                    y = y + ((strTmp[1] - '0'));
                                    break;
                                case 'S':
                                    y = y - ((strTmp[1] - '0'));
                                    break;
                            }
                    }
                }
			}else
			{
                j = 0;
            }
        }
    }
    printf("%d,%d",x,y); 
    return 0;
}