• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

제가 직접 작성한 코드에서는 중복된 결과가 나오는데 해결방법을 모르겠습니다.

22.07.07 22:22 작성 조회수 200

0

강의코드와는 다르지만 저는 여기서 왜 중복결과가 나오는지 어떻게 중복을 줄여야할 지 모르겠습니다....

t = int(input())
k = int(input())
p = []
n = []
cnt = 0
tmp = []

for i in range(k):
    a,b = map(int,input().split())
    p.append(a)
    n.append(b)

def DFS(i,sum):
    global cnt
    global tmp
    if sum > t:
        return
    if i == k:
        if sum == t:
            cnt += 1
            print(tmp)
    else:
        if n[i] > 0:
            n[i] -= 1
            tmp.append(p[i])
            DFS(i+1,sum+p[i])
            DFS(i,sum+p[i])
            n[i] += 1
            tmp.pop()
        DFS(i+1,sum)
        
DFS(0,0)
print(cnt)

 

이렇게 실행하면 

이렇게 나옵니다. 해결방법이 필요합니다..

답변 1

답변을 작성해보세요.

0

안녕하세요^^

스스로 디버그해 가면서 해결하셨으면 좋겠습니다.