POJ 1664 放蘋果 基礎組合dp

2021-07-05 13:17:56 字數 938 閱讀 4002

放蘋果

time limit:1000ms

memory limit:10000k

total submissions:28626

accepted:18106

description

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。

input

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。

output

對輸入的每組資料m和n,用一行輸出相應的k。

sample input

1

7 3

sample output

8

題目分析:設dp[i][j]表示i個蘋果放到j個盤子裡的方案數,首先0個蘋果和1個蘋果放到n個盤子裡的方案數都是1

當盤子數大於蘋果數(j > i)時,因為5,1,1和1,5,1是同一種,因此等價於i個蘋果放到i個盤子的方案數即dp[i][j] = dp[i][i]

當盤子數小於等於蘋果樹(j <= i)時,有兩種方案,一是每個盤子都至少有乙個蘋果則等價於把i - j個蘋果放到i個盤子裡即dp[i - j][j],二是至少有乙個盤子是空的,等價於把i個蘋果放到j-1個盤子裡即dp[i][j - 1],因此此時dp[i][j] = dp[i - j][j] + dp[i][j - 1],答案就是dp[m][n]

#include #include int const max = 25;

int dp[max][max];

int main()

}

poj1664放蘋果 遞迴

放蘋果time limit 1000ms memory limit 10000k total submissions 23149 accepted 14694 description 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1...

poj 1664 放蘋果 遞推

解題思路 我們不妨令f m,n 表示m個蘋果放到n個盤子裡有多少種放法,下面對不同的情況給予討論 1 當盤子數為1的時候,只有一種放法就是把所有蘋果放到乙個盤子裡。2 當蘋果數為0的時候,也只有一種放法。3 當m n時,也分兩種情況討論,一種是至少有乙個盤子裡不放蘋果,這樣子就相當於f m,n 1 ...

poj 1664 放蘋果 遞推

放蘋果time limit 1000ms memory limit 10000k total submissions 33295 accepted 20648 description 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1...