タイトル::
コインの所与のセットと、設定所定量を求めるの可能な組み合わせの数は、(別の異なる数を参照)
考えます;
動的プログラミング:DP [I]は、組合せ方法Iを構成する量を表します。
初期化:DP [I] = 0;(なしコイン構成)
伝達方程式:各コインについて(X)、DP [X] ++;硬貨の金種がdp、より大きい[I] + = DP [IX]。
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 の#defineは長い長いっ 4 の#define LD長いダブル 5 CONST INT MAXN = 305 。 6 INT DP [MAXN]。 7 INT ()メイン 8 { 9 のmemset(DP、0、はsizeof (DP))。 10 int型N、C、。 11 のscanf(" %D%dの"、&N、&C)。 12 のための(int型 I =1 ; I <= C; iは++ ) 13 { 14 のscanf(" %dの"、&A )。 15 DP [A] + = 1 ; 16 のための(int型 K = A + 1、K <= N; ++ k個) 17 { 18 DP [K] + = DP [K- A]。 19 } 20 } 21 のprintf(" %d個の\ n " 、DP [N])。 22 リターン 0 ; 23 }