我正在尝试生成所有 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);
}
答案 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));