题目
1.数字0到9可以组成很多个边长为4个数字的三角形,上面的数比下面相邻的两个数都小,问这样的三角形有多少个? 请编程输出最终的结果。代码
package com.hzc.bluecap;
public class NumTriangle {
private static int sum;
public static void main(String[] args) {
// TODO Auto-generated method stub
sum=0;
int[] arr= {0,1,2,3,4,5,6,7,8,9};
f(arr, 0, arr.length);
System.out.println(sum);
}
private static void f(int[] arr,int index,int end) {
// TODO Auto-generated method stub
if(index==arr.length-1) {
check(arr);
return;
}
for (int i = index; i < arr.length; i++) {
int a=arr[index];
arr[index]=arr[i];
arr[i]=a;
f(arr,index+1,end);
a=arr[index];
arr[index]=arr[i];
arr[i]=a;
}
}
private static void check(int[] arr) {
// TODO Auto-generated method stub
if(arr[0]<arr[1]&&arr[0]<arr[2]&&arr[1]<arr[3]&&arr[1]<arr[4]&&arr[2]<arr[4]&&arr[2]<arr[5]
&&arr[3]<arr[6]&&arr[3]<arr[7]&&arr[4]<arr[7]&&arr[4]<arr[8]&&arr[5]<arr[8]&&arr[5]<arr[9]) {
sum++;
}
}
}
总结
可以先用全排列吧每一个三角形排列出来再进行判断
由于层数比较少直接把判断过程写到if里面