나는이 문제에 대한 알고리즘을 필요합계 조합 목록
는 n은 자연수의 X1, X2, ..., XN, 다수의 S와 K의 집합을 감안할 때. 집합에서 선택한 k 개의 합 (합계 수가 여러 번 선택 될 수 있음)을 합계 S로 형성하십시오.
다르게 표기 됨 : S의 가능한 모든 조합을 경계로 나열하십시오. n < = 256, x < = 1000, k < = 32
예
problem instance: {1,2,5,9,11,12,14,15}, S=30, k=3
There are 4 possible combinations
S=1+14+15, 2+14+14, 5+11+15, 9+9+12.
이러한 경계를 사용하면 무차별 대입을 사용하는 것이 불가능하지만 동적 프로그래밍이 좋은 접근 방법이라고 생각합니다.
스키마는 다음과 같습니다. t [m, v] = m 개의 숫자로 구성된 합계 v의 조합 수입니다.
1. Initialize t[1,x(i)], for every i.
2. Then use formula t[m,v]=Sum(t[m-1,v-x(i)], every i satisfied v-x(i)>0), 2<=m<=k.
3. After obtaining t[k,S], I can trace back to find all the combinations.
딜레마가 t를이다의 m, V] 중복 교환 적 조합에 의해 증가 될 수있다 예를 들어, t [2.16] = 제 16 = 1 + 15 + 1 15 2. 또한, 최종 결과 f [3,30]은 1 + 14 + 15, 1 + 15 + 14, ..., 2 + 14 + 14,14 + 2 + 14, ...
대칭 순열을 제거하는 방법은 무엇입니까? 미리 감사드립니다.
는 (배낭 문제 같은데 HTTP : //en.wikipedia.org/wiki/Knapsack_problem) – demas
특히 integer partitioning 문제처럼 보입니다. http://en.wikipedia.org/wiki/Partition_%28number_theory%29 without 번호 k – user1704182