三角形判断问题
问题抽象:
搜索问题,从一组数据中搜索符合条件的数据,这道题采用了简单的三重循环,对于
简单的问题规模具有实用性,但是假如数据量较大时,时间复杂度太大,不具有实用性。
小技巧:
1. 如何从三个数据中求除了最大的值之外的其他数的和(看起来很傻):
先求和,然后求最大的值,最后用总和减去最大的值,即为其余的和
问题抽象:
搜索问题,从一组数据中搜索符合条件的数据,这道题采用了简单的三重循环,对于
简单的问题规模具有实用性,但是假如数据量较大时,时间复杂度太大,不具有实用性。
小技巧:
1. 如何从三个数据中求除了最大的值之外的其他数的和(看起来很傻):
先求和,然后求最大的值,最后用总和减去最大的值,即为其余的和
2. 求最大值,一般直接使用max函数,值得注意的是,需要在头文件中加入库algorithm
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
void solve(int a[], int n)
{
int ans = 0;
for(int i = 0; i < n; i++)
{
for(int j = i + 1; j < n; j++)
{
for(int k = j + 1; k < n; k++)
{
int len = a[i] + a[j] + a[k];
int max_len = max(a[i],max(a[j],a[k]));
int rest = len- max_len;
if(max_len < rest) //几个合理的方法
{
ans = max(ans,len);
}
}
}
}
printf("%d\n",ans);
}
int main()
{
int n;
int a[101] = {0};
cin>>n;
for(int i = 0; i < n;i++)
{
cin>>a[i];
}
solve(a,n);
return 0;
}