ACM(889)求距离(0)

求距离

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 0
描述
题目很简单,有两个人a和b,这两个人都面朝北站立。对于每一个人,都有四步操作,令这个人按给定的方向去移动,用W、E、S、N分别代表向西、向东、向南、向北。每次都移动一步,求两个人移动后的距离。例如,对a进行操作:E E E E,经过移动后a的位置为距离原点位置4步的位置。
输入
输入有多组测试数据。
每组测试数据有两行。
第一行有四个字符代表对第一个人的操作,每两个字符之间用空格隔开。
第二行代表对第二个人的操作。
输出

每组测试数据输出两人的距离,保留两位小数。


#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;

int na[4],nb[4];
void fun(char* c,int* x)
{
	for(int i=0;i<4;i++)
		switch(c[i])
		{
			case 'E':
				x[0]++;
				break;
			case 'W':
				x[1]++;
				break;
			case 'N':
				x[2]++;
				break;
			case 'S':
				x[3]++;
				break;
		}	
}

int main()
{
	char a[4],b[4];
	int xa=0,xb=0,ya=0,yb=0;
	while(cin>>a[0])
	{
	for(int i=1;i<4;i++)
		cin>>a[i];
	for(int i=0;i<4;i++)
	{
		na[i]=0;nb[i]=0;
		cin>>b[i];
	}
	fun(a,na);fun(b,nb);
	xa = na[2] - na[3];
	xb = nb[2] - nb[3];
	ya = na[0] - na[1];
	yb = nb[0] - nb[1];
	printf("%.2f\n",sqrt((xa - xb)*(xa - xb)+(ya-yb)*(ya-yb)));
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值