题意是在给定的线段长中挑选出能拼成三角形的最长的三条边,输出三角形的周长。
先对所有边排序,从大到小,满足两较短边之和大于第三边就输出,若从未输出过就输出 -1
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <algorithm> 5 using namespace std; 6 int a[1009]; 7 int main() 8 { 9 int n; 10 bool f; 11 while(~scanf("%d",&n)) 12 { 13 f = true; 14 for(int i = 0; i < n; i++) 15 { 16 scanf("%d",&a[i]); 17 } 18 sort(a,a+n); 19 for(int i = n-1; i >= 2; i--) 20 { 21 if(a[i-1] + a[i-2] > a[i]) 22 { 23 f = 0; 24 printf("%d\n",a[i-1]+a[i-2]+a[i]); 25 break; 26 } 27 } 28 if(f) puts("-1"); 29 } 30 return 0; 31 }
原文:https://www.cnblogs.com/Taskr212/p/9460570.html