放蘋果
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
1sample output7 3
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...