题目描述
小明家里有很多长度不同的木棍,有一天他很无聊,便摆弄这些木棍来解闷。他的数学很好,所以他想在这些木棍中挑选三根来组成一个直角三角形,在所有这些直角三角形中,找出面积最大的一个
输入描述
多组输入,每组输入包含两行,第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 }