백트래킹으로 부분집합구하기(Get Powerset usiing Backtracking)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def backtrack(a, k, input):
    global MAXCANDIDATES
    c = [0] * MAXCANDIDATES

    if k == input:
        process_solution(a,k) #답이면 원하는 작업한다.
    else:
        k+=1
        ncandidates = construct_candidates(a,k,input,c)
        for i in range(ncandidates):
            a[k] = c[i]
            backtrack(a, k, input)

def process_solution(a, k):
    print("(", end="")
    for i in range(k+1):
        if a[i]:
            print(i, end=" ")
    print(")")

#후보군 구하는 함수
def construct_candidates(a, k, input, c):
    c[0] = True
    c[1] = False
    return 2

#Main
MAXCANDIDATES = 100
NMAX = 100
a = [0] * NMAX
backtrack(a, 0, 3)

댓글

이 블로그의 인기 게시물

[python]섬의 둘레구하기

[Python]DFS를 이용한 부분집합 구현