北大考研複試上機 放蘋果

2021-08-15 00:21:00 字數 961 閱讀 1837

把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個蘋果放在j個盤子裡的方法數目,遞推公式如下:

dp[i][1] = 1; dp[1][j] = 1; //只有乙個盤子或者只有乙個蘋果的方法數目是1

dp[i][j] =dp[i][j-1] + dp[i-j][j];  (i>j)//在蘋果數量大於盤子數量的情況下,有兩種可能性:①如果所有盤子裡都放蘋果的話,那在所有盤子裡都去掉乙個蘋果方法數目不變,是dp[i-j][j];②如果至少有乙個盤子裡不放蘋果,那去掉這個不放蘋果的盤子,方法數目不變,是dp[i][j-1];

dp[i][j] = dp[i][j-1]; (idp[i][j] = dp[i][j-1] + 1; (i == j)// 在蘋果數量等於盤子數量的情況下,有兩種可能性:①如果所有盤子裡都放蘋果的話,那在所有盤子裡都放乙個蘋果,方法數目是1;②如果至少有乙個盤子裡不放蘋果,那去掉這個不放蘋果的盤子,方法數目不變,是dp[i][j-1];

#include #include #include #include #include #include #include #include #include #include using namespace std;

int dp[15][15];

int main()

for(int i = 0; i <= n; i++)

for(int j = 2; j <= n; j++)

}cout << dp[m][n] << endl;

}}

北大考研複試上機 日誌排序

有乙個網路日誌,記錄了網路中計算任務的執 況,每個計算任務對應一條如下形式的日誌記錄 hs 10000 p 是計算任務的名稱,2007 01 17 19 22 53,315 是計算任務開始執行的時間 年 月 日 時 分 秒,毫秒 253.035 s 是計算任務消耗的時間 以秒計 hs 10000 p...

北大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 空下乙個盤子,...

北大1160,放蘋果,分治法

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 ...