神狀態題。。。。經波神,旭神輪番普渡,方ac。。。道路崎嶇啊。。。
狀態 dp( i, j )
此題狀態意義,要能區分重複。
i 個蘋果,使用 j 個盤子放置,不同方案數量。
狀態轉移方程,從 當前是否有盤子空 來區分,這樣就不會存在重複情況了。
一,若存在空盤子,則可能分為1,2,3,。。。,j個, 但是狀態 dp( i, j-1 ) j-1個盤子放置i個蘋果,包含了2,3,。。,j-1個空的情況,所以此時等價於 dp( i, j-1 )
二,若不存在空盤子,(此時要滿足條件 i >= j ) , 那麼 每乙個盤子放乙個蘋果後,剩下 i - j 個蘋果 放置在 j 個盤子上,則此時可能存在空盤,則轉換成了 dp( i-j, j )
所以 轉移方程為
dp(i, j ) = dp(i,j-1)+ dp(i-j,j) // 第二個要滿足 i >= j
解題**
#include#include#include
typedef
long
long
ll;ll dp[
15][15
];int
main()
}printf(
"%lld\n
", dp[n][m] );
}return0;
}
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...