Java簡單演算法 M個蘋果放到N個盤子問題

2021-09-02 00:15:04 字數 846 閱讀 8669

乙個簡單演算法題是 10個蘋果有多少種分法(整個),比如 1 1 8和 1 8 1、8 1 1是一樣的。

它的本質還是m個蘋果和n個盤子的問題,這裡有個特殊的條件是m<=n。

簡單分析下:

m個蘋果 分成n份

第乙份是x1個,剩下的m-x1個蘋果和n-1份;

第二份是x2個,剩下的m-x1-x2個蘋果和n-2份;

······ ······ ······

第n份是xn個,剩下的m-x1-x2···-xn個蘋果和1份;

最終出口還是剩下的份數為1,不能再分了。

/**

* 遞迴

** @param remain 剩餘個數

* @param num 分幾次

* @param print 列印字首

* @param start 開始值

*/public static void deep(int remain, int num, string print, int start)

/*** j為什麼要從start開始?

* 因為 2_1_7 和 1_2_7是等效的,後者在操作的時候已經涵蓋了前者的情況

*/for (int j = start; j <= remain - start; j++)

}

呼叫處按具體邏輯處理

總共有多少種不同的分法,列印的地方累加即可。

M個蘋果放到N個相同盤子和N個不同盤子的解法

題目很簡單 就是把m個蘋果放到n個盤子中,盤子可以為空,問你有多少種放法。首先應該明白,盤子相同時三個盤子放1 1 5 和 5 1 1 是相同的,盤子不一樣時是不同的放法。1 放入相同盤子 蘋果為m,盤子為n 放蘋果時分為兩種可能 一種是蘋果數大於等於盤子數,第二種是蘋果數小於盤子數。f m,n 是...

遞迴演算法《M個蘋果放入N個盤子》

題目 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入每個用例包含二個整數m和n。0 m 10,1 n 10。樣例輸入 7 3樣例輸出 放蘋果分為兩種情況,一種是有盤子為空,一種是每個盤子上都有蘋果。令 m,n ...

「n個球放到m個盒子」問題整理

思路一 8個球放到3個盒子 取球最少盒子取0個球,取球第二少的盒子取 0,4 取球最少盒子取1個球,取球第二少的 盒子取 1,3 取球最少盒子取2個球,取球第二少的 盒子取 2,3 一共5 3 2 10種 類似於 整數拆分 包含0 非遞減序 8 0 0 8 1 7 2 6 3 5 8 1 1 6 2...