數字組合(01揹包)

2021-10-04 03:34:46 字數 596 閱讀 2889

小蒜有n(1≤n≤20) 個正整數,找出其中和為t(t 也是正整數)的可能的組合方式。如:

n=5,5 個數分別為 1,2,3,4,5 t=5;

那麼可能的組合有 5=1+4  5=1+4 和 5=2+3 和 5=5三種組合方式。

輸入格式

輸入的第一行是兩個正整數 n 和 t,用空格隔開,其中1≤n≤20, 表示正整數的個數,t為要求的和(1≤t≤1000)

接下來的一行是 n 個正整數,用空格隔開。

輸出格式

和為 t 的不同的組合方式的數目。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入

5 51 2 3 4 5

樣例輸出

3這題可以看成乙個01揹包,有n件物品,揹包容量為t,求最後有多少種能正好裝滿揹包的方案

ac**如下:

#include

#include

int dp[

20000];

intmain()

printf

("%d\n"

,dp[t]);

}return0;

}

數字組合(01揹包)

就是01揹包小小變形一下就不太會做了。思路 當前和的方案數等於當前和減當前和當去當前正數的方案數,如 當前正數為2,和為5的方案數就等於3 5 2 的方案數,和為3的方案數又等於1 3 2 的方案數。又因為在每一種方案中每個數字只能使用一次,所以採用01揹包。狀態轉移方程式 dp j dp j w ...

數字組合(01揹包問題)

給定n個正整數a1,a2,an,從中選出若干個數,使它們的和為m,求有多少種選擇方案。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,表示a1,a2,an。輸出格式 包含乙個整數,表示可選方案數。資料範圍 1 n 100 1 m 10000 1 ai 1000 輸入樣例 44 1122 輸出...

數字組合 動態規劃 01揹包 openjudge

總時間限制 1000ms 記憶體限制 65536kb 描述 有n個正整數,找出其中和為t t也是正整數 的可能的組合方式。如 n 5,5個數分別為1,2,3,4,5,t 5 那麼可能的組合有5 1 4和5 2 3和5 5三種組合方式。輸入 輸入的第一行是兩個正整數n和t,用空格隔開,其中1 n 20...