分享

在n个火柴里面拿3根出来拼接成最大三角形的周长

 陈喻 2021-10-19
求三角形max周长
public class 求三角形max周长 {
public static void main(String[] args) {
       /**
        * 有n个棍子 每个棍子的长度是a[i]
        *   3<=n<=100;
        *   1<=a[i]<=100; 
        */
System.out.println("请输入n根绳子");
Scanner input =new Scanner(System.in);
int n=input.nextInt();
System.out.println("每根绳子的长度");
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=input.nextInt();
}
int max=0;
//让i<j<k 这样棍子就不会重复选中了   我一开始没有想到 以后要记住
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
for(int k=j+1;k<n;k++){
//三条边的总和
int allLen=a[i]+a[j]+a[k];
//求三个数的最大值的时候 可以先求任意两个的最大值 然后再把这个最大值和第三个数进行比较得到最大值
int maxLength=maxValue(a[i],maxValue(a[j],a[k]));
//剩下的两边之和 可以有总长度减去那个最大值
int rest=allLen-maxLength;
if(rest>maxLength){
//如何可以组成三角形 然后将答案更新
max=maxValue(max,allLen);
}
}
}
}
if(max==0){
System.out.println("无论怎么组合都不能组成三角形");}
else{
System.out.println("最大的周长是"+max);
}

}
//求2个数字里面最大的数字
public static int maxValue(int a,int b){
int max=0;
if(a>b){
max=a;
}else{
max=b;
}
return max;
}    
}

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约