DFS를 이용한 부분집합 in C++

Purple·2021년 9월 11일
0

1. 입력 숫자에 따라, 1부터 해당 숫자까지의 숫자 배열에서 나올 수 있는 부분집합을 출력하는 코드

#include <iostream>
using namespace std;
int n, ch[101];

void DFS(int Level) {
	if(Level == n+1) {
		 for(int i=1; i<=n; i++) {
		 	if(ch[i] == 1) cout << i << " "; 
		 }
		 cout << "\n";
	}
	else {
		ch[Level] = 1;	// 해당 Level을 사용한다고 가정 
		DFS(Level+1);
		ch[Level] = 0;	// 해당 Level을 사용하지 않는다고  가정 
		DFS(Level+1);
	}
	
}

int main() {
	cin >> n;
	DFS(1);
	return 0;
}

  • 이진트리라고 생각하고, 각 Level에서의 원소가 사용될때(ch[] = 1)와 사용되지 않을때(ch[] = 0)를 나누어서 생각한다.
profile
안녕하세요.

0개의 댓글