暴力法

暴力法:根据问题的描述和所涉及的概念,简单直接的解决问题的方法。

暴力法是可以用来解决广阔领域的各种问题,它也可能也是唯一一种几乎什么问题都能解决的一般性方法。在输入数据的规模并不巨大的情况下,我们可以使用暴力法来解决一些问题。同样,暴力法也是用来衡量一个算法高效与否的基准。

冒泡排序和选择排序就是两个很好的例子,它们就是从直观上出发,根据排序的定义做出的直观算法

最近对问题

最近对问题并不复杂,它要求在包含有n个点的集合S中,找出距离最近的两个点。这就是最近对问题。暴力法就是对每一个点之间的距离都进行求解,然后求出最小值。具体实现如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <complex>
#include <limits>
#include <cmath>
using namespace std;
double Point(complex<int> *num,int size);
int main()
{
complex<int> n[5]; //这里用复数类型代替点
for (int i = 0; i < 5; i++)
{
cin >> n[i];
}
cout << Point(n, 5) << endl;;
system("pause");
}
double Point(complex<int> *num,int size)
{
double min = INT_MAX;
double temp;
for (int i = 0; i < size - 1; i++)
{
for (int j = i + 1; j < size; j++)
{
temp = pow((num[j].real() - num[i].real()), 2) + pow(num[j].imag() - num[i].imag(), 2);
if (min > temp)
{
min = temp;
}
}
}
return sqrt(min);

}//时间复杂度是O(n²)