读书笔记<程序设计>|三角形的构建

三角形的构建:有n根棍子,棍子i的长度为ai.要想从中选出3根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0.

限制条件:

1.3<=n<=100

2.1<=ai<=10^6

算法的主要思想:o(n^3)的复杂度,利用三层for循环找出每条边对应的符合条件的最大边长长度。

#include <stdio.h>
#include <stdlib.h>
#define max(x,y)  ((x>y)?x:y)
int main(int argc, char *argv[])
{
  int n,a[100],i,j,k;
  int len,max,ans=0;
  scanf("%d",&n);
  //input
  for(i=0;i<n;i++){
          scanf("%d",&a[i]);
  }   
  for(i=0;i<n;i++){
          for(j=i+1;j<n;j++){
                  for(k=j+1;k<n;k++){
                          len=a[i]+a[j]+a[k];
                          max=max(a[i],max(a[j],a[k]));
                          if(max<len-max){
                                          ans=max(ans,len);
                          }                        
                  }
          }
  }
  printf("%d\n",ans);
  system("PAUSE");    
  return 0;
}

 

posted @ 2016-08-14 23:10  Zero90  阅读(186)  评论(0)    收藏  举报