1 // Método a: o número de itens recursivos e volume de produto n matriz de um [100] para variáveis globais;
2 // COUNT (i, SUM) representa o número de combinações a partir do início da i-ésima matriz de volta para estatísticas e soma do número de tipos,
3. // soma e combinação número é: COUT (I, soma) = COUT (. I + 1, soma-a [i]) + COUT (. I + 1, soma),
. 4 // em que cout (i + 1, sum- a [i]) representa contém um [i], isto é, a partir do primeiro i + 1 seguinte número de contagem de
5 // número e combinação de soma-a [i] é o número do tipo, e cout (i + 1, soma) indica não compreendem uma [i], isto é, a partir do número de i + 1 em diante combinação estatística de números e o número de tipos de ******** soma ***************************
. 6 #include <o iostream>
7. a utilização de espaço de nomes DST;
8.
9. int Um [ 100 ];
10 int n- = . 1 ;
. 11 int COUNT (int I, int soma) {
12 é SE (soma == 0 ) {
13 é retorno 1. ; // encontrar um conjunto de combinação soma e número;
14 }
15 SE (I == n-soma || < 0 ) retornar 0 ; // I == nenhum outro n- número de instruções são combinados, soma <0 indicam que uma combinação não;
16 retorno COUNT (I + . 1 , um-sUM [I]) + COUNT (I + 1. , sUM); // a partir da matriz i é iniciado pela primeira vez, que compreende a [i], e não inclui;
. 17 }
18 é
19. int main () {
20 é o tempo (CIN >> n-) {
21 é para ( int i = 0 ; i <n; i ++ )
22 cin >> a [i];
23 cout << count ( 0 , 40 ) << endl;
24 }
25 retorno 0 ;
26 }
1 // Método dois: dinâmica de programação
2 #include <o iostream>
. 3 o uso de espaço de nomes DST;
. 4 #define N 100
. 5 int n-, A [N];
. 6 int main () {
7. O tempo (CIN >> n-) {
8. Int (DP *) [ 50 ] = novo novo int [N] [ 50 ]; // DP [i] [J] indica que o i-ésimo item no volume de frente Couchu J;
. 9 para ( int i = 1. ; i <= N-; ++ I ) {
10 CIN >> A [I];
. 11 DP [I] [0 ] = 1 ; // 初始边界
12 }
13 dp [ 0 ] [ 0 ] = 1 ;
14 para ( int i = 1 ; i <= n; i ++ )
15 para ( int j = 1 ; j <= 40 ; j ++ ) {
16 dp [i] [j] = dp [i- 1 ] [j];
17 , se (a [i] <= J)
18 dp [i] [j] = + dp [i- 1 ] [J- a [i]];
19 }
20 cout << dp [n] [ 40 ] << endl;
21 de exclusão [] dp;
22 }
23 retorno 0 ;
24 }