找宝藏

题目:

在一片平坦的大草原上,现在你站在一棵大树下,宝藏地图上面有一些指令,会叫你向东,西,南,北方向走若干步,最终你所站的位置就是宝藏的位置。

现在你以最短路径走向宝藏,每次仍然只能向东,西,南,北方向走动,请问至少要走几步能够到达宝藏?假设这片草原都是平坦的无障碍物的。


Input

输入一行一个指令字符串,最多200个字符。指令通过逗号分开,每一个指令由两部分组成,一个是正整数(不超过1000),以及一个方向(N (北), E (东), S (南),W (西))。比如3W表示向西走3步。字符串的最后有一个'.'表示指令结束。

Output

输出一个整数,表示最少需要的步数。


Sample Input

3N,1E,1N,3E,2S,1W.

Sample Output

5

#include <stdio.h>
int main()
{
	char m;
	char d;
	int n;
	int x=0,y=0;		//假设草原为直角坐标系,起点则为(0,0) 
	while (scanf ("%d",&n)!=EOF) {
		scanf ("%c%c",&m,&d);		//d为每组数据最后的逗号 
		if (m=='N') { 
			y=y+n; 
		}
		if (m=='E') {
			x=x+n;
		}
		if (m=='S') {
			y=y-n;
		}
		if (m=='W') {
			x=x-n;
		}
		if (d=='.') {		//数据最后若为'.'则结束输入 
			break;
		}
	}
	if (x<0) {	//求绝对值 
		x=-1*x;
	} 
	if (y<0) {
		y=-1*y;
	}
	printf ("%d",x+y);	//最短路径为最后x和y的绝对值相加 
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值