P2386 放蘋果(排列組合問題)

2021-09-11 02:43:59 字數 1037 閱讀 5374

目錄dp

dfs把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 24 3

2 7

輸出樣例#2:複製

2

42

這題和數的劃分做法相近,可以用dfs和dp,但是要注意該題的盤子是可空的。

f[ i ][ j ]表示將 i 份分在 j 個盤子裡

f[ 0 ][ j ]=f[ 1 ][ i ]=1 當蘋果數量為0或1時只有一種方法

f[ i ][ 1 ]=1 當只有乙個盤子時只有一種方法

f[ i ][ j-1 ] 表示j個盤子中有空盤,取出空盤

f[ i-j ][ j ] 則是每個盤子先放乙個蘋果的策略

**:

#includeusing namespace std;

int f[15][15];//f[i][j]即為i個蘋果放在j個盤子裡的方案數

int m,n,ans;

int main()

for(int i=step;i<=num/tar;i++)

dfs(i,num-i,tar-1);

}int main()

return 0;

}

洛谷 P2386 放蘋果

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

洛谷 P2386 放蘋果

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

洛谷P2386 放蘋果 題解 搜尋入門

題目大意 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分發 5,1,1和1,1,5是同一種方法 解題思路 搜尋列舉所有方案,乙個乙個放。我開dfs int id,int left 表示 當前正準備放第 id 個盤子,還剩餘 left 個蘋果沒有放 的狀態。則 如果當...