題目入口:p2347 砝碼稱重
寫在前面
本題是乙個簡單的 多重揹包
不用二進位制優化也毫無關係
甚至據說六個迴圈都能過…逃
如何記錄方案數:
if
(dp[i]
== i) ret++
;
解釋來說就是dp當前重量有(最優)方案說明此重量可實現,那麼結果加一
使用模版【模版】揹包問題彙總
//多重揹包模版(二進位制優化)
#include
#include
#include
using namespace std;
#define maxsize 100010
//注意最大物品數的修改
int wei[maxsize]
, num[maxsize]
, dp[maxsize]
;//物品重量 價值 數量 最優答案
int w=
;int
main()
for(
int i =
1; i <=
6; i++)if
(num[i])}
for(
int i =
1; i < pos; i++
)//01揹包
for(
int j = sum; j >= wei[i]
; j--
) dp[j]
=max
(dp[j]
, dp[j-wei[i]
]+wei[i]);
int ret =0;
for(
int i = sum; i >=
1; i--)if
(dp[i]
== i) ret++
;//如果當前重量有(最優)方案
printf
("total=%d\n"
, ret)
;return0;
}
P2347 砝碼稱重
題目描述 設有1g 2g 3g 5g 10g 20g的砝碼各若干枚 其總重 1000 輸入格式 輸入方式 a1,a2,a3,a4,a5,a6 表示1g砝碼有a1個,2g砝碼有a2個,20g砝碼有a6個 輸出格式 輸出方式 total n n表示用這些砝碼能稱出的不同重量的個數,但不包括乙個砝碼也不用...
P2347 砝碼稱重
題目鏈結 設有1g 2g 3g 5g 10g 20g的砝碼各若干枚 其總重 1000 輸入方式 a1 a2 a3 a4 a5 a6 表示1g砝碼有a1個,2g砝碼有a2個,20g砝碼有a6個 輸出方式 total n n表示用這些砝碼能稱出的不同重量的個數,但不包括乙個砝碼也不用的情況 1 1 0 ...
洛谷 P2347 砝碼稱重
時間限制1.00s 記憶體限制125.00mb 設有1g 2g 3g 5g 10g 20g的砝碼各若干枚 其總重 1000 輸入 1 1 1 0 0 0 0 輸出 1 total 3 方法一 sign j a i 1 思想類似於裝箱問題 include using namespace std con...