1-2 航船 (100分)
航船游戏中,风向每个单位时间会改变一次,每次航船可以选择顺风前行一个单位距离,也可以选择原地不动。游戏时长为 t,请你计算从起点出发,最终到达终点所需要的最少移动次数。如果游戏结束也到达不了终点,则输出-1。
输入格式:
第一行包括一个正整数 t(1<=t<=100000)。
第二行为起点坐标(x1 , y1)。
第三行为终点坐标(x2 , y2)。
接下来 t 行,每行输入一个单词,表示风向 。
输出格式:
输出为一个整数,为到达终点所需移动的最少步数;如果无法到达,输出-1。
输入样例:
在这里给出一组输入。例如:
5
1 1
2 2
east
north
west
west
north
输出样例:
在这里给出相应的输出。例如:
2
代码:
#include<stdio.h>
int main(void)
{
int t, x1, y1, x2, y2,i,sum = 0,judge = 1;
char ch[10];
scanf("%d %d %d %d %d", &t, &x1, &y1, &x2, &y2);
for (i = 0; i < t; i++) {
scanf("%s", ch);
if (ch[0] == 'e' && x2 > x1) {
x1++;
sum++;
}
else if (ch[0] == 'w' && x2 < x1) {
x1--;
sum++;
}
else if (ch[0] == 'n' && y2 > y1) {
y1++;
sum++;
}
else if (ch[0] == 's' && y2 < y1) {
y1--;
sum++;
}
}
if (x1 == x2 && y1 == y2) judge = 0;
if (!judge) printf("%d", sum);
else printf("-1");
return 0;
}