北大1160,放蘋果,分治法

2021-07-10 10:27:10 字數 531 閱讀 8722

#include#includeusing namespace std;

/** m為蘋果數,n為盤子數(m,n)表示總的放法

* 則可知:

* if(m>=n)即蘋果數目多

* 沒有盤子空的放法為(m-n,n)

* 有盤子空的放法為f(m,n-1)+f(m,n-2)+...+f(m,1)

* 從而有

* (m,n)=(m-n,n)+f(m,n-1)+...+f(m,1)

* 其中f(m,n)表示m個蘋果放在個盤子上不允許為空也即是f(m,n)=(m-n,n)

* if(m* 此時和m=n時的情況等價

*/ if(n==1)

return 1;

else if(m<0)

return 0;

else if(m==1||m==0)//m=0時也是一種

return 1;

else

}int main()

}

}

北大oj 1664 放蘋果

此題使用遞迴digui m,n 遞迴結束條件是 蘋果個數m為0或1,只有一種放法,reutun 1 盤子個數n為1,只有一種放法,reutun 1 然後,m個蘋果,n個盤子時,可分為兩種情況 一 m n,則 1 每個盤子放乙個蘋果,剩餘m n個蘋果再放,即為digui m n,n 2 空下乙個盤子,...

九度OJ 題目1160 放蘋果

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

北大考研複試上機 放蘋果

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。每行均包含二個整數m和n,以空格分開。1 m,n 10。對輸入的每組資料m和n,用一行輸出相應的k。示例1 7 3 8 思路 用動態規劃的方法,用dp i j 表示把i...