计算三角形的数量

来源:互联网 发布:电子商务软件开发 编辑:程序博客网 时间:2024/04/29 00:23

题目描述

有一次,老师给小明N根小木棒,要他从中选出K根,使这K根当中的任意三根都能拼成一个三角形。老师告诉他,构成一个三角形的条件是:任意两边之和大于第三边,任意两边之差小于第三边。

小明思考后,发现将这些小木棒按长短顺序排列后,很容易解决问题。

输入

输入二行

第一行一个整数表示:N(3≤N≤500)

第二行输入N个整数,相互之间用一个空格隔开

输出

输出:K的最大值

样例输入

6161 19 26 348 220 529

样例输出

3

提示

基本思路:如果三角形中二条较小边的和大于最大边,则此三条边可以构成三角形。对于有序排列的数,只要确定了能构成三角形的最小数和最大数,中间的每一个数都符合条件






#include<iostream> using namespace std; int main() {     int n;     int i,j,temp,sum=0,t=0;     int a[502];     cin>>n;     for(i=0;i<n;i++)         cin>>a[i];     for(i=0;i<n;i++)         for(j=0;j<n-1;j++)             if(a[j]<a[j+1])             {                 temp=a[j];                 a[j]=a[j+1];                 a[j+1]=temp;             }     while(t!=n-1)     {         temp=2;         for(i=t+1;i<n-1;i++)             if(a[i]+a[i+1]>a[t])                 temp++;         if(temp>sum)             sum=temp;         t++;     }     cout<<sum<<endl;     return 0; } 


原创粉丝点击