題目大意:
把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。...