描述
给出一些整数对,它们表示一些平面上的坐标点,给定一个点,求所有那些点到该点最短距离的点。结构为:第一个整数对为所给定的点,后面的整数对为所有其他的点。
输入
第一个整数对为所给定的点,后面的整数对为所有其他的点。
输出
到第一个点最短距离的点
样例输入
样例输入 |
---|
9 2 |
1 0 |
1 1 |
0 0 |
1 2 |
2 1 |
样例输出
样例输入 |
---|
2 1 |
代码段样例:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int arr[100][2] = {};
int s = 1;
for (int i = 0; i < 100; i++, s++)
{
char a;
cout << "请您输入第 " << i + 1 << " 个整数对" << endl;
cin >> arr[i][0];
cin >> arr[i][1];
cout << "您是否要继续输入" << endl;
cout << "继续输入填Y,终止输入填N" << endl;
cin >> a;
if (a != 'Y')
{
break;
}
cout << "进入下一次输入" << endl;
}
for (int i = 0; i < s; i++)
{
for (int j = 0; j < 2; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
int sum = 0;
int dis = (arr[0][0] - arr[1][0]) * (arr[0][0] - arr[1][0]) + (arr[0][1] - arr[1][1]) * (arr[0][1] - arr[1][1]);
int arr2[2] = {};
for (int i = 2; i < s; i++)
{
if (dis>((arr[i][0] - arr[0][0]) * (arr[i][0] - arr[0][0]) + (arr[i][1] - arr[0][1]) * (arr[i][1] - arr[0][1])))
{
dis = ((arr[i][0] - arr[0][0]) * (arr[i][0] - arr[0][0]) + (arr[i][1] - arr[0][1]) * (arr[i][1] - arr[0][1]));//距离的平方赋值
arr2[0] = arr[i][0];
arr2[1] = arr[i][1];
}
}
cout << endl;
cout <<" 距离最短的数组为:"<<arr2[0] << " " << arr2[1];
//cout << "距离的平方为:" << dis << endl;
system("pause");
return 0;
}
For reference only, please point out if there is any error.