題目描述:
給定乙個有n個正整數的陣列a和乙個整數sum,求選擇陣列a中部分數字和為sum的方案數。
當兩種選取方案有乙個數字的下標不一樣,我們就認為是不同的組成方案。
輸入描述:
輸入為兩行:
第一行為兩個正整數n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)
第二行為n個正整數a[i],以空格隔開。
輸出描述:
輸出所求的方案數
例子:輸入
5 15 5 5 10 2 3輸出4
public
class
main
//dp[i][j]二維表中每個元素表示前i個數字中和為j的方案數
int[
] dp =
newint
[n +1]
[sum +1]
;//當 j = 0 時,前i個數字和為0的方案數都為1
for(
int i =
0; i <= n; i++
)//當 i = 0 時,前0個數字和為 j(j != 0) 的方案數為0
for(
int j =
1; j <= sum; j++
)//接下來只要填表就行
for(
int i =
1; i <= n; i++
)else}}
system.out.
println
(dp[n]
[sum]);
}}}
動態規劃 數字和為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個正整數ai,以空格隔開。輸出描述 輸出所求...
求解數字和為 sum 的方法數問題
問題描述 給定乙個有 n 個正整數的陣列 a 和乙個整數 sum,求選擇陣列 a 中部分數字和為 sum 的方案數。若兩種選區方案有乙個數字的下標不一樣,則認為是不同的方案。輸入描述 輸入為兩行,第 1 行為兩個正整數 n sum,第 2 行為 n 何正整數 a i 以空格 隔開。輸出描述 輸出所求...