public static void main(String[] args) { int[] num = { 1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13 }; dfs(num, 0, num.length - 1); }
static void dfs(int[] num, int p, int q) { if (p == q && flag(num)) { System.out.print(num[0] + " " + num[1] + " " + num[2] + " " + num[3]); }
for (int i = p; i <= q; i++) { swap(num, p, i); dfs(num, p + 1, q); swap(num, p, i); } }
static void swap(int[] num, int p, int i) { int temp = num[p]; num[p] = num[i]; num[i] = temp; }
static boolean flag(int[] a) { int sum = sum(a[0], a[1], a[2], a[3]); int sum1 = sum(a[0], a[4], a[6], a[9]); int sum2 = sum(a[9], a[8], a[7], 11); int sum3 = sum(6, a[2], a[5], 11); int sum4 = sum(6, a[1], a[4], 14); int sum5 = sum(14, a[6], a[8], a[10]); int sum6 = sum(a[10], a[7], a[5], a[3]);
return sum == sum1 && sum1 == sum2 && sum2 == sum3 && sum3 == sum4 && sum4 == sum5 && sum5 == sum6; }
static int sum(int a, int b, int c, int d) { return a + b + c + d; }
|