動態規劃 POJ1664 放蘋果

2022-08-09 07:51:09 字數 680 閱讀 7408

非常經典的劃分數問題,即相當於把m個物體分成至多n組,求出分組總數。

【思路】當前狀態dp[i][j]表示將i個物體分成至多j組的分組總數。對於當前狀態,有以下兩種情形:

(1)j組中有組為空,則這種情況下分組總數相當於將i個物體分成至多j-1組。即dp[i][j-1]。

(2)j組中沒有組為空,則每一組至少有乙個物體,這種情況下分組總數相當於將每一組取出乙個物體後的分組數,再在每一組中新增乙個物體。即dp[i-j][j]

值得注意的是,第二種情況的分組條件為i>=j。

所以,dp[i][j]=dp[i][j-1]+dp[i-j][j](i>=j)

dp[i][j]=dp[i][j-1] 

初始時,將0個物體放入至多n組有1種情況,dp[0][n]=1;將m個物體放入1組有一種情況,dp[m][1]=1。

1 #include2 #include3

using

namespace

std;

4int

n,m,t;

5int dp[25][25];//

i個物體分為至多j組 67

void

distribute()

818 cout19return

; 20}21

22int

main()

23

poj 1664 放蘋果 動態規劃

解題思路 code 1 code 2 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分發 5,1,1和1,1,5是同一種方法 第一行是測試資料的數目t 0 t 20 以下每行均包括二個整數m和n,以空格分開。1 m,n 10 對輸入的每組資料m和n,用一行輸出相應的k...

動態規劃 遞迴(poj1664 放蘋果)

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

poj1664放蘋果 遞迴

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