이 소스들이 정말 이해가 되질 않습니다..ㅠㅠㅠ(help)
모드니
제가 지금 멱집합(powerset)을 구현할려고 하는데. 진짜 이해가 가질않네요 ㅠ...막연하고.그래서 다른분들이 하신 소스들을 참고했는데요. 봐도 어떤 원리로 구현했는지 도통 정리가 되지 않아서 도움을 구합니다.한번 보시고 어떤 원리인지 주석과 설명을 해주셨으면 좋겠습니다 ㅠㅠㅠ1)for ( i=1; i=number; i++ )
setNumber *= 2;for ( i=1; i=setNumber; i++ )
{
printf({ );
for ( j=1; j=number; j++ )
if ( i-1 & ( 1(j-1) ) ) //특히 이부분이요.
printf(%d,, j);
printf( },);
}
printf( }\n);
}
2)
int powerset(int count)
{
if(count 0)
return 0;
else
powerset(count-1);
if(check2&(1count))
printf(%d,count);
return 0;
}
int powerset(int check, int size)
{
if(check == 0)
printf({ });
else
{
powerset(check-1,size);
check2= check;
powerset(size-1);
printf(\n);
}
return 0;
}3)
int powerset(int t[], int i, int n, int p)
{
int j, k;
if (p i) {
powerset(t,i+1,n,p);
p=i;
}
if (i!=n) {
for(j=t[i]; j=i; j++) {
t[i] = j;
t[i+1] = t[i] + 1;
powerset( t, i+1, n, p); }
}else{
for (j=t[i]; j=n; j++) {
printf(\n { );
for (k=p; kn; k++)
printf(%d, ,t[k]+1);
printf(%d }\n\n,j+1);
}
}
return 0;
}이정도 찾았네요.. 근데 정말 이해가 되지 않네요 ㅠㅠ...부분집합을 구하는 소스인데 어떻게 돌아가는건지..여러분 도와주세요 ㅠㅠ
정말 이거 잡고 한 3일은 지나간거 같네요 ㅠㅠ.고민하느라..
아그리고 어떤님께서 팁을 주셨는데 만약 s=123 의 파워셋을구할려면 12의 부분집합에다가 끝에 3을 각각 추가해주면 된다고 하셨어요 정리하면 1,2의 부분집합은 ()(1)(2)(12)이거에다가 각뒤에 3을 더 포함해서 합쳐주면된다는데 이걸 소스로 구현하는게 참..어렵네요.. 혹시 이거 아시는 분 소스팁좀 주세요 ㅠㅠ