1到n的所有排列情况

灰太狼 2022-06-15 08:26 273阅读 0赞

用递归实现,可以这样考虑,n个数的所有情况是 n-1个数的所有排列情况在每种情况中从前往后依次插入第n个数构成的。

具体代码如下:

  1. public class MyTest {
  2. public static List<List<Integer>> f(int n){
  3. List<List<Integer>> listlist=new ArrayList<>();
  4. if(n==1){
  5. List<Integer> list=new ArrayList<>();
  6. list.add(1);
  7. listlist.add(list);
  8. return listlist;
  9. }else{
  10. List<List<Integer>> listList2=f(n-1);
  11. for(List<Integer> list:listList2){
  12. for(int i=0;i<n;i++){
  13. List<Integer> lst=new ArrayList<>(list);
  14. lst.add(i,n);
  15. listlist.add(lst);
  16. }
  17. }
  18. return listlist;
  19. }
  20. }
  21. public static void main(String[] args){
  22. List<List<Integer>> list=f(4);
  23. for(List<Integer> lst:list){
  24. System.out.println(lst);
  25. }
  26. System.out.println(list.size());
  27. }
  28. }

[4, 3, 2, 1]
[3, 4, 2, 1]
[3, 2, 4, 1]
[3, 2, 1, 4]
[4, 2, 3, 1]
[2, 4, 3, 1]
[2, 3, 4, 1]
[2, 3, 1, 4]
[4, 2, 1, 3]
[2, 4, 1, 3]
[2, 1, 4, 3]
[2, 1, 3, 4]
[4, 3, 1, 2]
[3, 4, 1, 2]
[3, 1, 4, 2]
[3, 1, 2, 4]
[4, 1, 3, 2]
[1, 4, 3, 2]
[1, 3, 4, 2]
[1, 3, 2, 4]
[4, 1, 2, 3]
[1, 4, 2, 3]
[1, 2, 4, 3]
[1, 2, 3, 4]
24

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 1n所有排列情况

    用递归实现,可以这样考虑,n个数的所有情况是  n-1个数的所有排列情况在每种情况中从前往后依次插入第n个数构成的。 具体代码如下: public class My

    相关 输出1~N之间所有素数

    输出1~N之间所有素数,含N,在控制台里每行输出5个数,并且这五个数之间以一个空格作为分隔 对于1~N范围内的数,进行整除,直至除到sqrt(N),不能整除的,则是质数