题解 | #坐标移动#
坐标移动
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);
}
查看3道真题和解析