牛牛手里有N根木棒,分别编号为1~N,现在他从N根里想取出三根木棒,使得三根木棒构成一个三角形,你能计算出牛牛有多少种取法吗?(考虑两种取法中使用的木棒编号有一个不一样就认为是不同的取法)。
说明:要单独判断三角成形的条件,就比较方便了。我这里用的最麻烦的多重遍历,应该还有好一些的方法。
package 模拟二;
import java.util.Scanner;
public class Q2_03_组装三角形 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] nums = new int[N];
for(int i = 0; i < N; i++){
nums[i] = sc.nextInt();
}
int number = getNumber(N, nums);
System.out.println(number);
// System.out.println(nums[3]);
}
public static int getNumber(int n, int[] nums){
if(n==0 || nums.length == 0|| nums == null){
return -1;
}
int count=0;
for(int i = 0; i < n; i++){
for(int j = i+1; j<n; j++){
for(int k = j+1;k<n;k++){
int a = nums[i];
int b = nums[j];
int c = nums[k];
if(isAngle(a, b, c)){
count++;
}
}
}
}
return count;
}
public static boolean isAngle(int a, int b, int c){
boolean flag = false;
if(a<b+c && b<a+c && c<a+b){
flag = true;
}
return flag;
}
}