給定乙個有n個正整數的陣列a和乙個整數sum,求選擇陣列a中部分數字和為sum的方案數。
當兩種選取方案有乙個數字的下標不一樣,我們就認為是不同的組成方案。
輸入描述:
輸入為兩行:
第一行為兩個正整數n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)
第二行為n個正整數ai,以空格隔開。
輸出描述:
輸出所求的方案數
輸入例子:
5 15
5 5 10 2 3
輸出例子:
4 遞推,可用二維陣列也可以用一維的滾動陣列。
其思想是,每次加入乙個數,去更新和的狀態。
邊界是f[0]= 1。
#include
using
namespace
std;
intconst maxn = 1100;
int data[maxn];
long
long f[maxn];
int main()
f[0] = 1;
for (int i=1;i<=n;i++) }}
cout
<}
動態規劃 數字和為sum的方法數
問題描述 給定乙個有n個正整數的陣列a和乙個整數sum,求選擇陣列a中部分數字和為sum的方案數。當兩種選取方案有乙個數字的下標不一樣,我們就認為是不同的組成方案。輸入描述 輸入為兩行 第一行為兩個正整數n 1 n 1000 sum 1 sum 1000 第二行為n個正整數a i 32位整數 以空格...
動態規劃 數字和為sum的方法數
題目描述 給定乙個有n個正整數的陣列a和乙個整數sum,求選擇陣列a中部分數字和為sum的方案數。當兩種選取方案有乙個數字的下標不一樣,我們就認為是不同的組成方案。輸入描述 輸入為兩行 第一行為兩個正整數n 1 n 1000 sum 1 sum 1000 第二行為n個正整數a i 以空格隔開。輸出描...
求解數字和為 sum 的方法數問題
問題描述 給定乙個有 n 個正整數的陣列 a 和乙個整數 sum,求選擇陣列 a 中部分數字和為 sum 的方案數。若兩種選區方案有乙個數字的下標不一樣,則認為是不同的方案。輸入描述 輸入為兩行,第 1 行為兩個正整數 n sum,第 2 行為 n 何正整數 a i 以空格 隔開。輸出描述 輸出所求...