程序设计竞赛-1.6.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;
}

猜你喜欢

转载自blog.csdn.net/nineship/article/details/80641555