c++ 멱집합 질문드립니다.
#include
#include
using namespace std;
int n;
string Data = "abcdef";
bool include[6];
void Powerset(int k)
{
if (k == n)
{
for (int i = 0; i < n; i++) // i = 0 1 2 3 4 5
{
if (include[i])
cout << Data[i] << "";
}
cout << endl;
return;
}
include[k] = false;
Powerset(k + 1);
include[k] = true;
Powerset(k + 1);
}
int main()
{
n = Data.size();
Powerset(0);
}
이렇게 짜여진 코드가 있어서 해석해보려고 하는데 막상 잘 안되더라고요.. 멱집합 자체는 알고있지만 구현과 해석이 어려워서 질문드립니다.
if문과 for문 자체는 반복문이라서 어느정도 해석됩니다. 다만 아래의
include[k] = false;
Powerset(k + 1);
include[k] = true;
Powerset(k + 1);
}
int main()
{
n = Data.size();
Powerset(0);
}
이쪽서부터 이해가 많이 안됩니다.. 이 구문(문단) 하나씩 빼봐서 구동이 되나 싶었지만 구동이 안되더라고요..
그 이유도 너무 모르겠어서 질문드립니다.
아래 영상의 26분27초부터 해당 코드를 설명하고 있습니다.
https://www.youtube.com/watch?v=nkeMRRIVW9s& ;amp;t=1607s