1.数字0到9可以组成很多个边长为4个数字的三角形,例如下图
仔细观察上面的三角形发现,上面的数比下面相邻的两个数都小,问这样的三角形有多少个?
请编程输出最终的结果。
思路:全排列然后根据条件筛选出符合条件的三角形。
代码如下:
public class Test1_特殊三角形 {
static int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
static int ans = 0;
public static void main(String[] args) {
f(0);
System.out.println(ans);
}
private static void f(int k) {
if (k == 9) {
if (data[0] < data[1] && data[0] < data[2]) {
if (data[1] < data[3] && data[1] < data[4] && data[2] < data[4] && data[2] < data[5]) {
if (data[3] < data[6] && data[3] < data[7] && data[4] < data[7] && data[4] < data[8]
&& data[5] < data[8] && data[5] < data[9]) {
ans++;
}
}
}
}
for (int i = k; i < data.length; i++) {
int temp = data[k];
data[k] = data[i];
data[i] = temp;
f(k + 1);
temp = data[k];
data[k] = data[i];
data[i] = temp;
}
}
}