인프런 - it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 강의를 바탕으로 공부한 내용입니다.
문제는 비공개로 입력예제와 출력예제만을 가지고 포스팅
입력예제 1
11
출력예제 1
1 2 3
1 2
1 3
1
2 3
2
3
풀이
- check배열 사용해 트리 왼쪽으로 가면 1, 오른쪽으로 가면 0을 넣어줌
- L=n+1이면 해당 부분집합을 출력함
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int n, ch[11];
//59. 부분집합(DFS 완전탐색)
void DFS(int L){
if(L==n+1){
//종료지점
int i;
for(i=1;i<=n;i++){
if(ch[i]==1) printf("%d",i);
}
puts(""); //줄바꿈
}
else{
ch[L]=1;
DFS(L+1);
ch[L]=0;
DFS(L+1);
}
}
int main(){
scanf("%d", &n);
DFS(1); //1Level
return 0;
}
'알고리즘' 카테고리의 다른 글
61. 특정 수 만들기[DFS] (0) | 2021.01.13 |
---|---|
60. 합이 같은 부분집합[DFS] (0) | 2021.01.11 |
57. 재귀함수 이진수 출력 [stack 이용] (0) | 2021.01.07 |
56. 재귀함수 분석[stack 활용] (0) | 2021.01.06 |
55. 기차운행[stack 활용] (0) | 2021.01.05 |