问题描述
给定一组点(x,y),求距离最远的两个点之间的距离。
输入
第一行是点数n(n大于等于2)
接着每一行表明一个点,由两个浮点数x y组成。
输出
输出一行是最远两点之间的距离。
使用cout << fixed << setprecision(4) << dis << endl;输出距离值并精确到小数点后4位。
fixed和setprecision是在头文件里定义的格式控制操做符,须要#include .
输入示例ios
6 34.0 23.0 28.1 21.6 14.7 17.1 17.0 27.2 34.7 67.1 29.3 65.1
输出示例web
53.8516
提示
注意在内部计算时最好使用double类型,但在用scanf读取数据时只能用float类型的变量。
源码svg
#include <iostream>
#include <vector>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
int n = 0;
cin >> n;
vector<float> PointX(n, 0), PointY(n, 0);
float DisTemp = 0, DisBiggest = 0;
for (int i = 0; i < n; i++)
{
cin >> PointX[i] >> PointY[i];
}
for (int i = 0; i < n-1; i++)
{
for (int j = i+1; j < n; j++)
{
DisTemp = sqrt((PointX[i]-PointX[j])*(PointX[i]-PointX[j])+(PointY[i]-PointY[j])*(PointY[i]-PointY[j]));
if (DisTemp > DisBiggest)
{
DisBiggest = DisTemp;
}
}
}
cout << fixed << setprecision(4) << DisBiggest << endl;
return 0;
}