尝试使用Java中的每个唯一数字生成9位数字

时间:2016-03-29 22:45:24

标签: java recursion permutation

我正在尝试生成所有 9位数字的排列,每个数字从 1到9 只使用一次,没有重复。 例如,123456789,132456789,987654321等.... 我用递归标记这个问题的原因是因为我相信我如何解决这个问题,但我不确定如何在Java中做到这一点

程序应该返回一个int数组列表。

List<int[]> list = new ArrayList<int[]>();
int[] values = {1,2,3,4,5,6,7,8,9};
int count=0;
int count2=0;
int count3=1;

while(count2<9*8*7*6*5*4*3*2) {
    for(int i =1;i<values.length-1;i++) {
        if (count<8*7*6*5*4*3*2) {
            Integer toMove = values[i];
            values[i]=values[i+1];
            values[i+1]=toMove;
            count++;
        } else if (count>=8*7*6*5*4*3*2&&count3<9) {
            values[0]=1;
            values[1]=2;
            values[2]=3;
            values[3]=4;
            values[4]=5;
            values[5]=6;
            values[6]=7;
            values[7]=8;
            values[8]=9;
            Integer toMove = values[0];
            values[0]=values[count3];
            values[count3]=toMove;
            count=1;
            count3++;
            i=0;
        }

        count2++;
        list.add(values);
    }

1 个答案:

答案 0 :(得分:0)

希望这就是你要找的东西

//Initialize List
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);

//Shuffle List      
Collections.shuffle(numbers);

//Obtain Array
Integer randomizedArray[] = numbers.toArray(new Integer[0]);

//Print Array
System.out.println(Arrays.toString(randomizedArray));