1-2 航船

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值