遞迴 分蘋果問題

2021-10-09 19:53:42 字數 778 閱讀 3935

問題描述:

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

時間限制:1000ms

記憶體限制:65536k

輸入格式:

第一行是測試資料的數目 t(0≤t≤20)。

以下每行均包含兩個整數m 和 n,以空格分開。1≤m,n≤10。

輸出格式:

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

樣例輸入:

1

7 3

樣例輸出:

解題思路:

對於蘋果分配,m個蘋果,要麼n個盤子全用,這種情況下每個盤子拿出乙個蘋果不影響分配結果,要麼至少有乙個空盤子剩餘。所以對於排序,可能會出現兩種情況,前面那種是divide(m - n , n),後面情況是divide(m, n - 1)。所以遞迴式就是divide(m - n , n) + divide(m, n - 1)。

當n > m時,盤子多餘蘋果,肯定至少有n- m個盤子空著,而盤子都是一樣的,就不用管這些盤子了,所以就變成了divide(m, m)。

當m為0或者n為1時,只有一種情況,返回1,這是遞迴邊界。

**:

#include

intdivide

(int m,

int n)

intmain()

return0;

}

問題 分蘋果

題目描述 給定一堆共n個蘋果,兩個人輪流進行如下操作 1,將這一堆蘋果分成兩堆,每堆的蘋果數目必須不同 2,另乙個人選擇其中一堆作為新的堆,開始下一輪操作。直到某個人不能滿足要求輸掉比賽,遊戲結束。假設兩個人都足夠聰明 總會選擇對自己最優的方案。比如說有3個蘋果,第乙個人只能選擇分兩堆1 2,第二個...

遞迴分蘋果組合數論

問題 將m個相同的蘋果放入n個相同的盤子 一共有多少種放法?注和是相同的一種。分析 所有不同的擺放方法可以分為兩類 至少有乙個盤子為空和所有盤子都不空。對於至少空著乙個盤子的情況,則n 個盤子擺放m 個蘋果的擺放方法數目與況,則n 個盤子擺放m 個蘋果的擺放方法數目等於n 個盤子擺放m n 個蘋果的...

問題 分蘋果 博弈

時間限制 1 sec 記憶體限制 128 mb 給定一堆共n個蘋果,兩個人輪流進行如下操作 1,將這一堆蘋果分成兩堆,每堆的蘋果數目必須不同 2,另乙個人選擇其中一堆作為新的堆,開始下一輪操作。直到某個人不能滿足要求輸掉比賽,遊戲結束。假設兩個人都足夠聰明 總會選擇對自己最優的方案。比如說有3個蘋果...