平面直角坐标系下两点A(x1,x2)、B(y1,y2),它们之间的欧氏距离为:sqrt((x1-y1)*(x1-y1)+(x2-y2)*(x2-y2))。扩展到N维空间,每个点的坐标有N维,例如点A(x1,x2,......,xN),类似地也可以计算两点之间的欧氏距离。编程计算N位向量的欧氏距离。
目内容:
平面直角坐标系下两点A(x1,x2)、B(y1,y2),它们之间的欧氏距离为:sqrt((x1-y1)*(x1-y1)+(x2-y2)*(x2-y2))。扩展到N维空间,每个点的坐标有N维,例如点A(x1,x2,......,xN),类似地也可以计算两点之间的欧氏距离。编程计算N位向量的欧氏距离。
输入格式:
首先输入N;
然后输入第一个点的N位坐标,取整数值,用空格分隔;
再输入第二个点的N位坐标,取整数值,用空格分隔。
输出格式:
输出浮点数,保留两位小数。
输入样例:
2
3 4
5 6
输出样例:
2.83
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
float distance(int* p1, int* p2,int size)
{
float dis(0.0);
for (int i = 0; i < size; i++)
{
dis = sqrt(dis * dis + (p1[i]-p2[i])*(p1[i]-p2[i]));
}
return dis;
}
int main()
{
float dis(0);
int N;
cin >> N;
int* p1 = new int[N];
int* p2 = new int[N];
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
p1[i] = temp;
}
for (int j = 0; j < N; j++)
{
int temp;
cin >> temp;
p2[j] = temp;
}
dis = distance(p1, p2,N);
cout << setiosflags(ios::fixed);
cout << setprecision(2) << dis;
delete[]p1, p2;
return 0;
}