看Java編程思想的時候看到了這個吸血鬼數,感覺比較有意思就想寫下來記錄一下,我的這個是針對四位數的,更高的也可以適當向上拓展,我寫的時候裏面比較麻煩的就是結果重複問題了,用了個靜態變量就好了,我的具體思想就是得到一個四位數,將它分開成4個數字,求全排列和全排列對應的值,這裏面有重複數字的時候全排列就會重複,確實蛋疼,不過還是解決了。好吧,看代碼吧。
public class Main {
private static int lastNumber = 0;
private void magicNumber() {
int[] nums = new int[4];
for (int i = 1000; i < 10000; i++) {
if (i % 100 == 0) {
continue;
}
int t = i;
nums[0] = t / 1000;
t %= 1000;
nums[1] = t / 100;
t %= 100;
nums[2] = t / 10;
nums[3] = t % 10;
isMagic(i, nums, 0);
}
}
private void isMagic(int number, int[] nums, int index) {
int a, b;
for (int i = index; i < nums.length; i++) {
int t = nums[index];
nums[index] = nums[i];
nums[i] = t;
a = nums[0] * 10 + nums[1];
b = nums[2] * 10 + nums[3];
if (a * b == number) {
if (number == lastNumber) {
break;
}
System.out.println(a + " * " + b + " = " + number);
lastNumber = number;
}
isMagic(number, nums, index + 1);
t = nums[index];
nums[index] = nums[i];
nums[i] = t;
}
}
public static void main(String[] args) {
long t1 = System.currentTimeMillis();
Main main = new Main();
main.magicNumber();
System.out.println(System.currentTimeMillis() - t1);
}
}
不足之處請多多包涵,錯誤歡迎指出