動態規劃 數字和為sum的方法數

2021-10-23 02:49:23 字數 793 閱讀 6563

題目描述:

給定乙個有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 以空格 隔開。輸出描述 輸出所求...