题目:
在一片平坦的大草原上,现在你站在一棵大树下,宝藏地图上面有一些指令,会叫你向东,西,南,北方向走若干步,最终你所站的位置就是宝藏的位置。
现在你以最短路径走向宝藏,每次仍然只能向东,西,南,北方向走动,请问至少要走几步能够到达宝藏?假设这片草原都是平坦的无障碍物的。
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;
}