/*
* @(#) E2008.java
* Created on 2004-10-9
* Created by James Fancy
*/
package jamesfancy;import java.util.Arrays;/**
* @author James Fancy
*/
public final class E2008 { private int[] data;
private boolean[] used;
private int[] selected;
private int count; public E2008() {
data = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
used = new boolean[data.length];
Arrays.fill(used, false);
count = 10;
selected = new int[count];
} private void found() {
long top = ((long) selected[0]) * 10000 + selected[1] * 1000
+ selected[2] * 100 + selected[3] * 10 + selected[4];
long bottom = ((long) selected[5]) * 10000 + selected[6] * 1000
+ selected[7] * 100 + selected[8] * 10 + selected[9];
if (top + 20085 == bottom) {
for (int i = 0; i < count; ++i) {
System.out.print(selected[i]);
System.out.print(", ");
}
System.out.println();
} } public void permute() {
permute(0);
} private void permute(int n) {
if (n < count) {
for (int i = 0; i < data.length; ++i) {
if (!used[i]) {
selected[n] = data[i];
used[i] = true;
permute(n + 1);
used[i] = false;
}
}
} else {
found();
}
} public static void main(String[] args) {
E2008 e2008 = new E2008();
e2008.permute();
}}
* @(#) E2008.java
* Created on 2004-10-9
* Created by James Fancy
*/
package jamesfancy;import java.util.Arrays;/**
* @author James Fancy
*/
public final class E2008 { private int[] data;
private boolean[] used;
private int[] selected;
private int count; public E2008() {
data = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
used = new boolean[data.length];
Arrays.fill(used, false);
count = 10;
selected = new int[count];
} private void found() {
long top = ((long) selected[0]) * 10000 + selected[1] * 1000
+ selected[2] * 100 + selected[3] * 10 + selected[4];
long bottom = ((long) selected[5]) * 10000 + selected[6] * 1000
+ selected[7] * 100 + selected[8] * 10 + selected[9];
if (top + 20085 == bottom) {
for (int i = 0; i < count; ++i) {
System.out.print(selected[i]);
System.out.print(", ");
}
System.out.println();
} } public void permute() {
permute(0);
} private void permute(int n) {
if (n < count) {
for (int i = 0; i < data.length; ++i) {
if (!used[i]) {
selected[n] = data[i];
used[i] = true;
permute(n + 1);
used[i] = false;
}
}
} else {
found();
}
} public static void main(String[] args) {
E2008 e2008 = new E2008();
e2008.permute();
}}
long top = ((long) selected[0]) * 10000 + selected[1] * 1000
+ selected[2] * 100 + selected[3] * 10 + selected[4];
long bottom = ((long) selected[5]) * 10000 + selected[6] * 1000
+ selected[7] * 100 + selected[8] * 10 + selected[9];
if (top + 20085 == bottom) {
System.out.println(" " + top);
System.out.println(" 20085");
System.out.println("+-----");
System.out.println(" " + bottom);
System.out.println();
} }结果有如下一些: 14982
20085
+-----
35067 27951
20085
+-----
48036 37941
20085
+-----
58026 41973
20085
+-----
62058 51963
20085
+-----
72048 64932
20085
+-----
85017