题目描述
给出起点和终点的坐标,及接下来 T 个时刻的风向(东南西北),每个时刻可以选择顺风偏移 1个单位或者停在原地。求到达终点的最少移动步数。
坐标采用平面直角坐标系,x 轴正向为东,y 轴正向为北。
如果无法偏移至终点,输出 −1。
输入格式
第一行两个正整数 x1,y1,表示小明所在位置。
第二行两个正整数 x2,y2,表示小明想去的位置。
第三行一个整数 T,表示 T 个时刻。
第四至第 N+3 行,每行一个字符,表示风向,即东(E)南(S)西(W)北(N)的英文单词的首字母。
输出格式
一行一个整数,表示最少移动步数。
输入输出样例
输入
1 1 2 2 5 E N W W N
输出
2
对了60%的代码:
#include<stdio.h>
int fab(int a)
{
if(a>=0)return a;
else return -a;
}
int main()
{
int x1,y1,x2,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
int n,count=0;
scanf("%d",&n);
for(int i=n;i>0;i--)
{
if(x2-x1==0&&y2-y1==0){
printf("%d",count);
return 0;
}
char a;
int x0=x1,y0=y1;
while(1){
a=getchar();
if(a!='\n')break;
}
if(a=='E')x0++;
else if(a=='W')x0--;
else if(a=='S')y0--;
else if(a=='N')y0++;
if(fab(x2-x0)<fab(x2-x1)){
x1=x0,count++;
}
if(fab(y2-y0)<fab(y2-y1)){
y1=y0,count++;
}
}
if(x1!=x2||y1!=y2)printf("-1");
else printf("%d",count);
return 0;
}
标签:总结,y2,22,int,24.12,else,x2,y1,x1
From: https://blog.csdn.net/The_cute_cat/article/details/144653695