static ArrayList<List<Integer>> nPkV2(int[] arr,int k){
ArrayList<List<Integer>> ret = new ArrayList<>();
boolean[] visited = new boolean[arr.length];
int[] resList = new int[k];
nPkdfsV2(ret,arr,resList,visited,k,0);
return ret;
}
static void nPkdfsV2(ArrayList<List<Integer>> ret,
int[] arr,
int[] resList,
boolean[] visited,
int k,int idx){
if(k==idx){
List<Integer> tmp = new ArrayList<>();
for(int i=0;i<k;i++){
tmp.add(resList[i]);
}
ret.add(tmp);
}else{
for(int i=0;i<arr.length;i++){
if(visited[i]) continue;
visited[i]=true;
resList[idx]=arr[i];
nPkdfsV2(ret,arr,resList,visited,k,idx+1);
visited[i]=false;
}
}
}
'Java' 카테고리의 다른 글
[JAVA] Comparable 이란? (0) | 2021.02.19 |
---|---|
[JAVA] next_permutation, prev_permutation (0) | 2020.09.19 |
[JAVA] 비트 연산자를 이용하여 조합 & 부분집합 & 부분집합 여부파악 (0) | 2020.08.30 |
String[] To ArrayList<String>, ArrayList<String> To String[] (0) | 2020.08.25 |
자바 String reverse (0) | 2020.08.24 |
댓글