2017-11-01 7 views
-3

dp [n]이 n 개의 요소를 포함하는 최대 힙을 형성하는 방법의 수를 저장하면, 우리는 다음을 얻습니다. 좌측 하위 트리 N1 중C++에서 최대 힙을 형성하는 방법을 찾기 위해 재귀 메소드를 구현하는 방법은 무엇입니까?

dp[n] = nCr(n - 1, n1) * dp[n1] * dp[n2]; 

  1. 선택 N1 소자.

  2. 왼쪽 하위 트리의 요소는 dp [n1] 방식으로 최대 힙을 형성 할 수 있습니다.

  3. 오른쪽 하위 트리의 요소는 dp [n2] 방식으로 최대 힙을 형성 할 수 있습니다.

n1 및 n2를 계산하는 방법은?

+0

퀴즈가 맞습니까? 숙제? 그것은 확실히 질문이 아닙니다. – DimChtz

답변

0

내가 게시 한 수식을 둘러싼 루프가 누락되었다고 생각합니다. n11에서 n-1까지 다양합니다. "max heap"에 노드가 모두 n을 소비해야한다면 간단히 n2 = n-n1이됩니다. 더 적게 사용할 수 있다면 n21에서 n-n1으로 변경하려면 다른 루프가 필요합니다.

계산 된 모든 수량의 합계를 반환합니다.