问一个问题

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*
* @author Mr Zhang
* 全排列数组的全排列
* 为什么要new ArrayList<Integer>(list)
*/
public class Perm {
public static void main(String[] args) {
List<ArrayList<Integer>> perm=new ArrayList<>();
ArrayList<Integer> list=new ArrayList<>();
list.add(1);
list.add(3);
list.add(5);
calperm(perm, list, 0);
System.out.println(perm);
}
public static void calperm(List<ArrayList<Integer>> perm, ArrayList<Integer> list, int n) {
if (n == list.size()) {
perm.add(new ArrayList<Integer>(list));//此处为什么要新建一个list,而如果直接用list出不了结果?
} else {
for (int i = n; i < list.size(); i++) {
Collections.swap(list, i, n);
System.out.println(list);
calperm(perm, list, n + 1);
Collections.swap(list, i, n);
}
}
}
}
全部评论
最后会对list做更改,就是下一种情况。是对同一块堆在操作。
点赞 回复 分享
发布于 2018-01-16 21:57

相关推荐

秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务