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揹包動態規劃
- 【演算法】0-1揹包問題演算法
- 0-1揹包問題(動態規劃)動態規劃
- 通天之分組揹包
- leetcode題解(0-1揹包問題)LeetCode
- 動態規劃解0-1揹包問題動態規劃
- 0-1揹包問題 動態規劃法動態規劃
- 動態規劃之 0-1 揹包問題詳解動態規劃
- 【動態規劃】0-1揹包問題原理和實現動態規劃
- 資料結構與演算法——0-1揹包問題資料結構演算法
- P1757 通天之分組揹包
- 01揹包、完全揹包、多重揹包詳解
- 揹包問題(01揹包與完全揹包)
- 演算法——貪心演算法解0-1揹包問題演算法
- 揹包DP——完全揹包
- 揹包DP——混合揹包
- 0-1 揹包問題詳解(暫告一段落)
- 揹包
- 組合模型初探模型
- 01揹包、有依賴的揹包
- CHOJ 5202 自然數拆分Lunatic版 【完全揹包模型】模型
- 【數學】組合數學 - 排列組合
- 01 揹包
- 揹包DP
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 揹包問題
- 組合數學
- Python識別字母數字組合驗證碼Python
- JavaScript數字和字母組合驗證碼詳解JavaScript
- 組合數學筆記-排列與組合筆記
- ACM 揹包問題ACM
- 01揹包問題
- dp-完全揹包
- 位元組面試演算法題-0,1揹包問題面試演算法
- 組合數問題
- lg組合計數
- 組合數字首和