- public class Tests {
- public static final int N = 4;
- public static void main(String[] args){
- // 标记数字是否被使用过.
- // digits[i] == 0 ==>数字i+1未使用过
- // digits[i] == 1 ==>数字i+1已使用过
- int[] digits = new int[N];
- // digits初始化为0
- Arrays.fill(digits, 0);
- // 深度优先搜索求排列
- permute(digits, 3, 0);
-
- }
-
- /**
- * @param n:还需要寻找几个数字
- * @param num:当前已找到的数字
- * */
- public static void permute(int[] digits, int n, int num) {
- // 已经达到输出位数要求,输出排列好的数字
- if (n == 0)
- System.out.println(num);
- for (int i = 1; i <= N; i++) {
- // 数字i未被使用过
- if (digits[i - 1] == 0) {
- // 标记i为已使用
- digits[i - 1] = 1;
- // 递归,寻找下一个数字
- permute(digits, n-1, num * 10 + i);
- // 递归完毕,标记i为未使用
- digits[i - 1] = 0;
- }
-
- }
- }
-
- }
复制代码 |