동적 프로그래밍 문제를 해결하기 위해 노력 중이며 수의 'p'숫자 순열 'n'까지 합계합니다. p 숫자 세트의 각 숫자는 0에서 n까지이어야합니다. 주어진 숫자 'n'에 합쳐진 'p'숫자의 순열 수 찾기
예를 들어, N = 4, p = 3, I는 I이 DP 접근 시작 12 순열{4,0,0},{0,4,0},{0,0,4}
{2,2,0},{2,0,2},{0,2,2}
{1,3,0},{1,0,3},{0,1,3}
{1,1,2},{1,2,1},{2,1,1}
다음의 경우.
n(i,j) represents number of ways of representing n using i,j in p positions
내 기본 케이스는 p = 3 명에 대한 예를 들면
n(i,0) = n(0,i) = p
(N (4,0) 될 것은 3 {4,0,0}, {0,4이며 0}, 0,0,4}
재귀 경우
n(i,j) = n(i,j-1)*n(i-1,j)
(예 : N (1,2) = N (1,1) * N까지의 재귀 N (0,2) (1,0) * n (0,1) * 2)
위의 방법으로 올바른 방향으로 진행하고 있는지 정확한지 알 수 없습니다. 저를 올바른 방향으로 인도하십시오.
숙제 문제 일 수 있습니까? –
순열 부분은 거의 완전하게 분리 된 것처럼 보입니다. - 덧셈은 교환 적이거나 결합 적입니다. DP를 사용하여 더 간단한 문제를 해결할 수있는 것처럼 보입니다. 세트의 각 구성원이'[0, n]'범위에있는'n'의 합계 인'p' 숫자 세트를 찾습니다. (예를 들어 '011'은 두 개의 '1'을 구별 할 수없는 경우에만 '3!/2!'순열을가집니다.) – rliu
@MikeW 그것은 숙제가 아닙니다. [이] (https://www.hackerrank.com/challenges/count-scorecards) 문제를 시도했습니다 – quirkystack