题目:三角形的最大周长
给定由一些正数(代表长度)组成的数组arr,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回`0。文章来源:https://www.toymoban.com/news/detail-659408.html
分析:文章来源地址https://www.toymoban.com/news/detail-659408.html
- 对数组排序,再从大到小选择三个数,
- 再判断是否能构成三角形,可以直接返回三数之和,不能就把最大的数换掉,往小数的方向继续找下一个,更新三个数的位置,继续判断,找到一个就返回
import java.util.Arrays;
/**
* @author: Arbicoral
* @create: 2023-07-18 13:07
* @Description: 三角形的最大周长
*/
public class GreedyByMaxPerimeter {
public static void main(String[] args) {
System.out.println(maxPerimeter(new int[]{3,6,2,3,8,5,9,10,1}));
}
private static int maxPerimeter(int[] arr) {
Arrays.sort(arr);
int a,b,c;// a:第三大 b:次大 c:最大
for (int i = arr.length-1; i>1; i--) {
c = arr[i];
b = arr[i-1];
a = arr[i-2];
if (isTriangle(a,b,c)){
System.out.println("三角形的三边分别为:"+a+"\t"+b+"\t"+c);
return a+b+c;
}
}
return -1;
}
/**
* 判断 a b c 能否组成三角形,其中 a < b < c
* 判断条件:两边之和 > 第三边
*/
private static boolean isTriangle(int a, int b, int c) {
return a + b > c;
}
}
到了这里,关于贪心算法求数组中能组成三角形的最大周长的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!