題目描述觀察題目,我們可以發現這道題是一道簡單的遞推/動態規劃。把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 以下每行均包含二個整...