TYVJ 1096 數字組合【0-1揹包模型】
題目描述
在N個數中找出其和為M的若干個數。先讀入正整數N(1<N<100)和M(1<M<10000), 再讀入N個正數(可以有相同的數字,每個數字均在1000以內), 在這N個數中找出若干個數, 使它們的和是M, 把滿足條件的數字組合都找出來以統計組合的個數,輸出組合的個數(不考慮組合是否相同)。要求你的程式執行時間不超過1秒。
輸入格式
第一行是兩個數字,表示N和M。
第二行起是N個數。
輸出格式
就一個數字,表示和為M的組合的個數。
樣例資料
輸入樣例 #1 | 輸出樣例 #1 |
---|---|
|
|
題解:n 個正整數看作 n 個物品,m 看作揹包容量。設 dp[ j ] 表示和為 j 的方案數。dp[0] = 1,即一個也不選的方案數為 1。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1000+7;
int dp[maxn], a[maxn];
int main()
{
int n, m;
cin >> n>> m;
for(int i = 1; i <= n; i++)
cin >> a[i];
dp[0] = 1;
for(int i = 1; i <= n; i++){
for(int j = m; j >= a[i]; j--)
dp[j] += dp[j-a[i]];
}
cout << dp[m] <<endl;
return 0;
}
相關文章
- 整數0-1揹包問題
- 分組揹包、完全揹包
- leetcode題解(0-1揹包問題)LeetCode
- 【演算法】0-1揹包問題演算法
- 0-1揹包問題(動態規劃)動態規劃
- 動態規劃解0-1揹包問題動態規劃
- 通天之分組揹包
- CHOJ 5202 自然數拆分Lunatic版 【完全揹包模型】模型
- 動態規劃之 0-1 揹包問題詳解動態規劃
- 【動態規劃】0-1揹包問題原理和實現動態規劃
- NYOJ 1426-大賣場購物車1【0-1揹包】
- 揹包問題(01揹包與完全揹包)
- 01揹包、完全揹包、多重揹包詳解
- 揹包DP——完全揹包
- 揹包DP——混合揹包
- P1757 通天之分組揹包
- 【模板】01揹包、完全揹包
- 51nod 1597 有限揹包計數問題 (揹包 分塊)
- 揹包
- 01揹包、有依賴的揹包
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 01 揹包
- 揹包DP
- 01揹包和完全揹包問題解法模板
- hdu3591The trouble of Xiaoqian 多重揹包+全然揹包
- 【數學】組合數學 - 排列組合
- 揹包問題
- Python識別字母數字組合驗證碼Python
- python 1096: 水仙花數(函式專題)Python函式
- 01揹包問題
- dp-完全揹包
- 01 揹包問題
- 揹包九講(部分)
- 【例9.14】混合揹包
- POJ 2184 (01揹包)
- 程式碼填空:組合數字 計蒜客 - A1145
- JavaScript數字和字母組合驗證碼詳解JavaScript
- 組合數學