遞迴 放蘋果

2021-07-02 07:51:25 字數 999 閱讀 5278

問題描述

把 m 個同樣的蘋果放在n 個同樣的盤子裡,允許有的盤子空著不放,問共有多少

種不同的分法?(用k 表示)注意:5,1,1 和1,5,1 是同一種分法。

輸入資料

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含兩個整數m 和n,以

空格分開。1<=m,n<=10。

輸出要求

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

輸入樣例

17 3

輸出樣例

8我的思路:因為題目是用遞迴做的。我就想如何可以原來問題分解了乙個更小的問題,又因為盤子都一樣的。先考慮第乙個盤子放蘋果的情況,然後遞迴的考慮後面的各種情況,為了必要重複,我還設定了他們放蘋果的數量是遞減的。同時還要考慮n>m的情況其實和n=m的情況是一樣的。於是我就寫出了這個四不像的演算法。我也不知道是什麼東西,但是能出結果,還能ac。。。哈哈。 

後來想想,我的方法有點像是搜尋的方式,dfs(depth first search)。即我先把前面我說的那些條件(按蘋果數遞減放)設定好,然後dfs去搜尋每個盤放蘋果的情況,當剩下最後乙個盤的時候,就能得到一種情況。

#include

int m,n,nsum;

void recursion(int ncount,int left,int prio)

}else}}

}int main()

return 0;

}其實真正的遞迴是這樣的,考慮兩種情況:

當然必須考慮m最後判斷程式的出口:當蘋果數量為0或者盤數隻剩1那麼就表明找到一種情況。

#include

int recursion(int m, int n)

int main()

return 0;

}/5/15 22:18

/5/15 22:18

遞迴 放蘋果

遞迴 includeusing namespace std int count int m,int n int main 執行結果 enter n case 2enter two intengers 7 3the total path is 8 enter two intengers 10 8 th...

遞迴 放蘋果

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

放蘋果 遞迴

小蒜想知道把 mmm 個同樣的蘋果放在 nnn 個同樣的盤子裡,允許有的盤子空著不放,共有多少種不同的分法?用 kkk 表示 555,111,111 和 111,555,111 是同一種分法。輸入格式 第一行是測試資料的數目 t 0 t 20 t 0 le t le 20 t 0 t 20 以下每行...