package structure;
import java.util.concurrent.TimeUnit;
/**
* 1-9,总共9个数字,不能重复,然后前一位数除以1,前两位数除以2,前三位数除以3,以此类推,前9位数除以9,
*
* 利用搜索法就可以,因为约束条件较为苛刻,因此效率 很快
*/
public class Baidu {
static int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
static int count = 0;
static void back(int t) {
if (t == array.length) {
System.out.println(count);
return;
}
for (int i = t; i < array.length; i++) {
swap(array, t, i);
count = count * 10 + array[t];
if (count % (t + 1) == 0) {
back(t + 1);
}
count = (count - array[t]) / 10;
swap(array, t, i);
}
}
static void swap(int[] array, int i, int j) {
int t = array[i];
array[i] = array[j];
array[j] = t;
}
public static void main(String args[]) {
long start = System.currentTimeMillis();
back(0);
long end = System.currentTimeMillis();
System.out.println((end - start));
}
}
1-9,总共9个数字,不能重复,然后前一位数除以1,前两位数除以2,前三位数除以3,以此类推,前9位数除以9,都可以除尽
最新推荐文章于 2021-05-20 20:59:56 发布
本文介绍了一个有趣的数学问题:寻找1到9数字的排列方式,使得从第一位开始的每n位数字组成的整数能被n整除。通过回溯算法高效解决了这一问题,并展示了完整的Java实现代码。

9077

被折叠的 条评论
为什么被折叠?



