問題描述
把 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 以下每行...