참, 거짓을 선택하거나, 선택 자체의 여부를 결정할 때 사용하면 좋은 방법!!
예를들어 크기 10의 배열에 0또는1을 넣는 경우, 2^10개(중복순열 2Pi10
)의 경우를 탐색하면 된다.
void DFS(int depth)
{
if (depth == MAP_SIZE)
{
for (int i = 0; i < selected.size() ; i++) {
cout << selected[i] << " ";
}
cout << endl;
return;
}
for (int i = 0; i <= 1; i++)
{
selected.push_back(i);
DFS(depth + 1);
selected.pop_back();
}
}