POJ 1664 放蘋果 遞推

2022-04-10 02:38:23 字數 503 閱讀 5665

dp[i][j]表示i個盤放j個蘋果的方案數,dp[i][j] 可以由 dp[i - 1][j] 和 dp[i][j - i] 遞推而來。

當盤子的個數大於等於蘋果的個數:

dp[i - 1][j] :i - 1個盤子放j個蘋果,說明i個盤子裡最少有乙個盤子是空的

dp[i][j - i] :i個盤子都放了蘋果,說明有j - i個蘋果是隨便放置的

否則:dp[i][j] = dp[i - 1][j]

然後沒有蘋果的盤子的方案為1,即dp[i][0] = 1

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6int dp[15][15];7

intmain()818

}19intt , n , m;

20 cin >>t;

21while(t--)

25 }

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...

poj1664 放蘋果 acm解題報告 遞推

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