practivceAlgorithm/자료구조&알고리즘

[알고리즘] 중복조합

findTheValue 2021. 9. 18. 02:45

중복조합

  • 서로다른 n개의 원소 중, 중복을 허락하여 r개를 뽑는 것.
  • nHr = (n+r-1)C(r)
  • 조합에서의 중복만 허용하므로 순서는 여전히 상관하지 않는다.(조합)
  • dfs에서 i+1이 넘어가면 조합, i가 넘어가면 중복조합
def dfs(idx, depth):
    if depth == r:
        print(*comb)
    for i in range(idx,n):
        comb[depth] = arr[i]
        dfs(i, depth + 1)
  • n-1개의 칸막이를 뽑아야하는 요소들 r개 사이에 배치하는 경우의 수.
  • = n-1개의 막대기로 구분된 영역에 요소를 집어넣는 경의의 수.
  • nHr = n-1+r C n-1 = n-1+r C r

다음에 예제 풀어 첨부할 것.