放蘋果問題

2021-07-23 17:28:07 字數 596 閱讀 2502

【問題描述】將m個蘋果放到n個空盤子中,允許盤子為空,允許乙個盤子放任意個蘋果,問總共有多少種放法。注意,不考慮盤子的次序,比如,將7個蘋果放到3個盤子中,5 1 1和1 5 1是同一種放法。

【解答】

假設將m個蘋果放到n個盤子中的放法有f(m,n)種,從最簡單的情況考慮起。當m=0或者n=0,f(m,n) = 1;

當n=1時,所有蘋果只能放在乙個盤子中,f(m,n) = 1;

現我們要考慮將m和n進行降維:

當n>m,即盤子數量大於蘋果數量,意味著至少有n-m個空盤子,而盤子的次序不予考慮,因此移除這n-m個盤子不影響結果,因此f(m,n) = f(m,m);

當n<=m,即盤子數量小於或等於蘋果數量,這時候又可以分為兩類情形:

(1)至少有乙個空盤子,此時f1(m,n) = f(m,n-1);

(2)沒有空盤子,先將每個盤子放上乙個蘋果,還剩m-n個蘋果,此時問題還原為將m-n個蘋果放到n個盤子種,f2(m,n) = f(m-n,n);

所以當n【程式設計實現】

public class main

long fn(int m, int n)

}

放蘋果問題

題目來自 總時間限制 1000ms 記憶體限制 65536kb 描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n ...

放蘋果問題

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

演算法 放蘋果問題

1.在說放蘋果問題之前,先說下斐波那契數列遞迴求解時的時間複雜度。由公式f n f n 1 f n 2 很容易畫出其遞迴樹 每個節點都會呼叫一次f n 滿二叉樹節點數m 2 h 1,h是樹高度。則o n 2 n.2.放蘋果問題 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種...