思路
暴力解法,,,后续思考是否有其他解法
- 得到输入字符串
- 找到“;”号后作为1次判断
- 如果该字符串第1位不是ASDW,第2三位不是数字,则跳过
- 符合条件:A:x减去-数字,D:x加上数字,W:y加数字,S:y减去数字
- 注意: 字母后面可能是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;
}