題目
m個相同蘋果放到n個相同籃子裡有多少種放法,允許有籃子不放。
1<=m<=10,1<=n<=10
例如5個蘋果三個籃子,3,1,1 和 1,1,3是同一種放法
輸入 7 3
輸出 8
思路
設f(m,n) 為m個蘋果,n個盤子的放法數目:
當n>m:必定有n-m個盤子永遠空著,去掉它們對擺放蘋果方法數目不產生影響。即if(n>m) f(m,n) = f(m,m)
當n<=m:不同的放法可以分成兩類:
(1)有至少乙個盤子空著,即相當於f(m,n) = f(m,n-1);
(2)所有盤子都有蘋果,相當於可以從每個盤子中拿掉乙個蘋果,不影響不同放法的數目,即f(m,n) = f(m-n,n).而總的放蘋果的放法數目等於兩者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)
遞迴出口條件說明:
當n=1時,所有蘋果都必須放在乙個盤子裡,所以返回1;
當沒有蘋果可放時,定義為1種放法;
遞迴的兩條路,第一條n會逐漸減少,終會到達出口n==1;
第二條m會逐漸減少,因為n>m時,我們會return f(m,m) 所以終會到達出口m==0.
**
/*---------------------------------------
* 日期:2015-07-07
* 題目:分蘋果
-----------------------------------------*/
#include
#include
#include
#include
#include
using
namespace
std;
return
1; }//if
// 籃子多於蘋果 按照蘋果個數分
else
}//else
}int main()//while
return
0;}
華為機試真題 70 分蘋果
題目 m個相同蘋果放到n個相同籃子裡有多少種放法,允許有籃子不放。1 m 10,1 n 10 例如5個蘋果三個籃子,3,1,1 和 1,1,3是同一種放法 輸入 7 3 輸出 8思路 設f m,n 為m個蘋果,n個盤子的放法數目 當n m 必定有n m個盤子永遠空著,去掉它們對擺放蘋果方法數目不產生...
華為機試真題 66 單詞搜尋
題目 日期 2015 07 06 題目 wordsearch include include include include include using namespace std bool dfs vector board,string word,int index,int x,int y,vec...
華為機試真題 2015 65 和尚挑水
題目 某寺廟裡7個和尚 輪流挑水,為了和其他任務不能衝突,各人將有空天數列出如下表 和尚1 星期二,四 和尚2 星期一,六 和尚3 星期三,日 和尚4 星期五 和尚5 星期一,四,六 和尚6 星期二,五 和尚7 星期三,六,日 請將所有合理的挑水時間安排表思路回朔法求解 回朔法即每進行一步,都試圖在...