演算法 放蘋果

2021-10-03 08:15:24 字數 561 閱讀 1108

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

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。

對輸入的每組資料m和n,用一行輸出相應的k。

設f(m,n)為m個蘋果,n個盤子的放法數目,則先對n作討論,

含有0的方案數,即有至少乙個盤子空著,即相當於 f(m,n)=f(m,n-1);

不含有0的方案數,即所有的盤子都有蘋果,相當於可以從每個盤子中拿掉乙個蘋果,不影響不同放法的數目,即 f(m,n)=f(m-n,n).

而總的放蘋果的放法數目等於兩者的和,即 f(m,n)=f(m,n-1)+f(m-n,n)

#include

#include

#include

using

namespace std;

intfun

(int m,

int n)

intmain()

}

演算法 放蘋果問題

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

c 遞迴演算法 放蘋果

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

演算法練習 1 放蘋果(分治演算法)

首先談談分治演算法為何物。在電腦科學中,分治法是一種很重要的演算法。字面上的解釋是 分而治之 就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題 直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。這個技巧是很多高效演算法的基礎,如排序演算法 快速排序,歸...