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揹包、完全揹包、多重揹包詳解
- 演算法——貪心演算法解0-1揹包問題演算法
- 0-1 揹包問題詳解(暫告一段落)
- 組合模型初探模型
- 揹包
- CHOJ 5202 自然數拆分Lunatic版 【完全揹包模型】模型
- 【數學】組合數學 - 排列組合
- 01 揹包
- 揹包DP
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 組合數學
- Python識別字母數字組合驗證碼Python
- JavaScript數字和字母組合驗證碼詳解JavaScript
- 組合數學筆記-排列與組合筆記
- 位元組面試演算法題-0,1揹包問題面試演算法
- ACM 揹包問題ACM
- 組合數問題
- 程式碼填空:組合數字 計蒜客 - A1145
- 01 揹包的變形
- 【數學】組合數學 - 卡特蘭數
- Python引數組合Python
- 《小 學 組 合 數 學》
- 從【零錢兌換】問題看01揹包和完全揹包問題
- 基於粒子群演算法的分組揹包MATLAB實現演算法Matlab
- 【組合數學】組合數學簡介 ( 組合思想 2 : 數學歸納法 | 數學歸納法推廣 | 多重歸納思想 )
- (C++模板程式設計):通過遞迴組合、tuple及基類引數包展開引數包C++程式設計遞迴
- 01揹包面試題系列(一)面試題
- JavaScript 揹包問題詳解JavaScript