[编程题] 组装三角形
牛牛手里有N根木棒,分别编号为1~N,现在他从N根里想取出三根木棒,使得三根木棒构成一个三角形,你能计算出牛牛有多少种取法吗?(考虑两种取法中使用的木棒编号有一个不一样就认为是不同的取法)。
输入描述:
首先输入一个正整数N,接下来的一行共有N个正整数表示每个木棒的长度。
N ≤ 50, 木棒的长度 ≤ 10000.
输出描述:
输出一个整数表示方法数。
输入例子:
5
1 2 3 4 5
输出例子:
3
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc.nextLine();
String[] s=sc.nextLine().split(" ");
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=Integer.parseInt(s[i]);
}
int res=triNum(a);
System.out.println(res);
}
/**
* @param a 数组中放三角形边长
* @return 可以组成的三角形的个数
*/
public static int triNum(int[] a) {
int len=a.length;
int count=0;
for(int i=0;i<=len-3;i++){ //1,2,3,4则i最多到2需要循环两次
for(int j=i+1;j<=len-2;j++){ //1,2,3,4则j最多到3
for(int k=j+1;k<=len-1;k++){
if(a[i]+a[j] > a[k] && a[i]+a[k]>a[j] && a[j]+a[k]>a[i] ){
count++;
}
}
}
}
return count;
}
}