2016. 6. 25. 00:47
Algorithm/Backtracking
기본적으로 풀기 어려우면 무조건 부분집합 돌려서 각 값을 대입해서 최대 최소값 구하고 본다. 그러면 중간이라도 간다.
#include <stdio.h> int data[]={1,2,3,4}; int flag[]={0,0,0,0}; void powerset(int n,int depth) { if(n==depth){ int i; printf("{"); for(i=0;i<n;i++){ if(flag[i]==1)printf("%d ",data[i]); } printf("}\n"); return; } flag[depth]=1; powerset(n,depth+1); flag[depth]=0; powerset(n,depth+1); } int main() { powerset(sizeof(data)/sizeof(int),0); return 0; }
'Algorithm > Backtracking' 카테고리의 다른 글
정올 해밀턴 순환 회로 (0) | 2016.06.22 |
---|---|
정올 영역구하기 (0) | 2016.06.13 |