GitHub

木棒三角形 1432

 

题目描述

小明家里有很多长度不同的木棍,有一天他很无聊,便摆弄这些木棍来解闷。他的数学很好,所以他想在这些木棍中挑选三根来组成一个直角三角形,在所有这些直角三角形中,找出面积最大的一个

输入描述

多组输入,每组输入包含两行,第1行输入一个整数n(0<n<=100),表示木棍的根数,接着下一行有n个整数(<=1000),表示木棍的长度。

输出描述

输出面积最大的直角三角形面积,保留3位小数,如果不能组成三角形,输出“No”

样例输入

4

1 2 3 4

5

5 3 2 4 6

样例输出

No

6.000

 

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 int main(){
 5     int n;
 6     while(cin>>n){
 7         double s[n];
 8         int i,j,k;
 9         double sum=0.0,p=0.0;
10         for(i=0;i<n;i++){
11             cin>>s[i];
12         }
13         for(i=0;i<n-2;i++){
14             for(j=i+1;j<n-1;j++){
15                 for(k=j+1;k<n;k++){
16                     if(s[i]+s[j]<s[k]||s[i]+s[k]<s[j]||s[j]+s[k]<s[i]){
17                         continue;
18                     }
19                     else{
20                         if(s[i]*s[i]+s[j]*s[j]==s[k]*s[k]){
21                             p=0.5*s[i]*s[j];
22                         }
23                         if(s[i]*s[i]+s[k]*s[k]==s[j]*s[j]){
24                             p=0.5*s[i]*s[k];
25                         }
26                         if(s[k]*s[k]+s[j]*s[j]==s[i]*s[i]){
27                             p=0.5*s[k]*s[j];
28                         }
29                         if(p>sum){
30                             sum=p;
31                         }
32                     }
33                 }
34             }
35         }
36         if(sum==0){
37             cout<<"No"<<endl;
38         }
39         else{
40             cout<<fixed<<setprecision(3)<<sum<<endl;
41         }
42     }
43     return 0;
44 } 

 

posted @ 2019-06-25 17:38  繁华似锦觅安宁  阅读(437)  评论(0编辑  收藏  举报