어렵다. 알고리즘 구현이 어렵다... 새로운 방법을 생각해내 구현을 하긴 했지만 배열을 malloc으로 했으면 더 좋았을걸이라는 생각이 계속 든다. set 1-> a set 2-> a (a ab) b set 3-> a ab b (a ac) (ab, abc) (b, bc) c set 4-> a ac ab abc b bc c (a ad) (ac acd) (ab abd) (abc abcd) (b bd) (bc bcd) (c cd) d 가만히 보니 재귀호출을 생각해볼 수도 있었겠다. set1에서는 a하나 set2에서는 set1과 set1+set2 set2 set3에서는 set2와 set2+set3 set3 이렇게 나가게된다. 이것을 아래에 구현 했다. 복잡하지만. 만약 이것을 malloc으로 구현하려했다면 메모리 크기를 구해야하므로 메모리의 크기는 Ssub(n) = 2Ssub(n-1) + asub(n-1) + 1 이 된다. S -> 크기(메모리, 각각의 수의 갯수), a -> 항(subset)의 갯수 input은 9 {1,2,3,4,5,6,7,8,9}로 테스트를 해 보았다. 결과는 아래. set9에서 0.03초 set10에서 0.12초, set12에서 2.4초가 나왔다. {{{~cpp #include #include #include int print(char *set, int size); int main() { int size; int i; clock_t time_in; scanf(" %d", &size); char set[size]; time_in = clock(); for(i=0; i