끄적끄적
내가 보려고 적는 순열, 조합, 부분 집합 본문
조합 - 뽑힌 위치을 true로 저장. cnt를 센다
static int []visited;
static int R,N;
void cmbination(int target, int cnt){
if(cnt == R){
for(int i=0;i<visited.length;i++){
if(visited[i]){
System.out.print(i+" ");
}
}
return;
}
if(target == N) return;
visited[target] = true;
combination(target+1,cnt+1);
visited[index] = false;
combination(target+1, cnt);
}
순열 - 인자로 저장할 위치 index 사용. for문을 써서 visited[i] false를 찾는다.
void permutation(int index){
if(index == R) {
for(int i=0;i<R;i++){
System.out.println(arr[i]+" ");
}
return;
}
for(int i=0;i<N;i++){
if(visited[i]) continue;
visited[i]=true;
arr[index]=i;
permutation(index+1);
visited[i]=false;
}
}
부분 집합 - for문으로 갯수를 지정해주면 combination 진행
static int []visited;
static int R,N;
void subSet(){
for(int i=0;i<=N;i++){
visited = new boolean[i+1];
combination(0,0,i);
}
}
void cmbination(int target, int cnt,int tc){
if(cnt == tc){
for(int i=0;i<visited.length;i++){
if(visited[i]){
System.out.print(i+" ");
}
}
return;
}
if(target == N) return;
visited[target] = true;
combination(target+1,cnt+1,tc);
visited[index] = false;
combination(target+1, cnt,tc);
}
'알고리즘' 카테고리의 다른 글
프로그래머스 가장 긴 팰린드롬 (0) | 2021.10.10 |
---|---|
SWE 암호생성기 (0) | 2021.08.06 |
백준 2493 탑 (0) | 2021.08.06 |
백준 17478 재귀함수가 뭔가요? (0) | 2021.08.06 |
백준 1244 스위치 켜고끄기 (0) | 2021.08.06 |
Comments