package cn.itcast.demo;
/**
*
*/
public class chaTriangle {
static boolean check2(int[] a) {
static boolean check3(int[] a) {
static boolean check4(int[] a) {
static void show(int[] a) {
// K值从0开始
static void f(int[] a, int k) {
if (k == 14) {
for (int i = k; i < a.length; i++) {
{
f(a, k + 1);
{
}
}
public static void main(String[] args) {
/**
* 3
1 4
5 6 2 看出什么特征吗? 首先,它包含了1~6的连续整数。 重要的是:每个数字都是其下方相邻的两个数字的差(当然是大数减去小数)
* 满足这样特征的三角形,称为:差三角。*
*/
public class chaTriangle {
static boolean check1(int[] a) {}
return a[0] == Math.abs(a[1] - a[2]);
static boolean check2(int[] a) {
return a[1] == Math.abs(a[3] - a[4]) && a[2] == Math.abs(a[4] - a[5]);}
static boolean check3(int[] a) {
return a[3] == Math.abs(a[6] - a[7]) && a[4] == Math.abs(a[7] - a[8])}
&& a[5] == Math.abs(a[8] - a[9]);
static boolean check4(int[] a) {
return a[6] == Math.abs(a[10] - a[11])}
&& a[7] == Math.abs(a[11] - a[12])
&& a[8] == Math.abs(a[12] - a[13])
&& a[9] == Math.abs(a[13] - a[14]);
static void show(int[] a) {
System.out.println(a[0]);}
System.out.println(a[1] + " " + a[2]);
System.out.println(a[3] + " " + a[4] + " " + a[5]);
System.out.println(a[6] + " " + a[7] + " " + a[8] + " " + a[9]);
System.out.println(a[10] + " " + a[11] + " " + a[12] + " " + a[13]
+ " " + a[14]);
// K值从0开始
static void f(int[] a, int k) {
if (k == 3 && !check1(a))
return;
if (k == 6 && !check2(a))
return;
if (k == 10 && !check3(a))
return;
if (k == 14) {
if (check4(a))}
show(a);
return;
for (int i = k; i < a.length; i++) {
{
int t = a[k];} // a[k] <--> a[i]
a[k] = a[i];
a[i] = t;
f(a, k + 1);
{
int t = a[k];} // a[k] <--> a[i]
a[k] = a[i];
a[i] = t;
}
}
public static void main(String[] args) {
int[] x = new int[15];
for (int i = 0; i < 15; i++)
x[i] = i + 1;
f(x, 0);
}
}
输出的结果: