放蘋果 動態規劃

2021-08-14 01:30:23 字數 1214 閱讀 2721

題目描述

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

輸入輸出格式

輸入格式:

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

輸出格式:

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

輸入輸出樣例

輸入樣例1:

1 7 3

輸出樣例1:

8 輸入樣例2:

3 3 2

4 3

2 7

輸出樣例2:

2 4

2

觀察題目,我們可以發現這道題是一道簡單的遞推/動態規劃。

當然,這道題理論上來說,有兩種動態規劃的思路,最後都匯成乙個轉移方程,不過並不一樣。

第一種方法:f[i][j]陣列記錄前i個盤子裡放了j個蘋果,並且保證每個盤子都放有蘋果的方案數,這樣在計算答案時需要統計求和。

具體的思路與把彈珠放在盒子裡 簡單的動態規劃類似,在這裡就不再重複講述。

**如下:

#include 

using

namespace

std;

int m,n,t,ans;

int f[11][11];

int main()

return

0;}

第二種方法:f[i][j]陣列記錄下前i個盤子中放有j個蘋果,並且允許出現空盤子的情況。

而這種方法計算出來的答案f[i][j]不需要進行求和,就可以得到答案,只需要在初始狀態預處理完1個盤子、1個蘋果的情況,方便接下來的動態轉移方程即可。

當然,如何保證不會出現重複情況的**,在鏈結中有講到,這裡不再重複**。

**如下:

#include 

using namespace std;

int t;

int m,n;

int f[11][11]=;

inline int

read()

while ((c>='0')&&(c<='9'))

return

x*f;

}int main()

return

0;}

放蘋果(動態規劃)

題目描述 把 m 個同樣的蘋果放在 n 個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?注意 5 1 1 和 1 5 1 是同一種分法,即順序無關。輸入包含多組資料。每組資料報含兩個正整數 m和n 1 m,n 20 對應每組資料,輸出乙個整數k,表示有k種不同的分法。示例1 7 3 8...

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

Codeup動態規劃專題總結 放蘋果

時間限制 1 sec 記憶體限制 32 mb 提交 87 解決 70 提交 狀態 討論版 命題人 外部匯入 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。第一行是測試資料的數目t 0 t 20 以下每行均包含二個整...