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

2022-05-19 22:02:33 字數 611 閱讀 1725

題目大意:

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

解題思路:

搜尋列舉所有方案,乙個乙個放。

我開dfs(int id, int left),表示「當前正準備放第 id 個盤子,還剩餘 left 個蘋果沒有放」的狀態。

則:如果當前id == n,說明存在一種方案。

否則,在第 id 個盤子放得時候要確保次方案合法,即,假設第 id 個盤子放得蘋果的數量是 i :

實現**如下:

#include using namespace std;

const int maxn = 20;

int cnt, m, n, a[maxn], t;

void dfs(int id, int left)

int st = (id == 1) ? 0 : a[id-1];

for (int i = st; (n-id+1)*i <= left; i ++)

}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 放蘋果(排列組合問題)

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