m個蘋果放入n個盤子問題

2021-10-21 06:40:50 字數 1592 閱讀 6901

題目:

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。

輸入每個用例包含二個整數m和n。0<=m<=10,1<=n<=10。0<=n<=10<=m<=10

解題思路:

我們首先定義dp[i][j]表示i個蘋果,j個盤子的分法總數

1.當盤子數多於蘋果數時:則必定有j-i個盤子是空著的。

dp[i,j] = dp[i,i];

2.當盤子數少於蘋果數時(j<=i):

又分兩種情況:

<1>當有空盤子時:即至少有乙個盤子是空的:dp[i][j] = dp[i][j-1];

<2>沒有空盤子時:即所有的盤子都有蘋果,從每個盤子裡拿掉乙個蘋果對結果沒有影響:dp[i][j] = dp[i-j][j];

因此所有可能的情況為dp[i][j] = dp[i][j-1]+dp[i-j][j];

初始化:

我們知道當i=0時,也就是蘋果為0,只有一種放法,當j=1時,也就是盤子為1,只有一種放法。

**如下:

#include

using

namespace std;

const

int n =

1010

;int n, m;

int dp[n]

[n];

intmain()

else

if(i >= j)

} cout << dp[n]

[m]<< endl;

return0;

}

現在試試下面這道題,嘿嘿嘿!!!

題目:在火影忍者的世界裡,令敵人捉摸不透是非常關鍵的。

我們的主角漩渦鳴人所擁有的乙個招數——多重影分身之術——就是乙個很好的例子。

影分身是由鳴人身體的查克拉能量製造的,使用的查克拉越多,製造出的影分身越強。

針對不同的作戰情況,鳴人可以選擇製造出各種強度的影分身,有的用來佯攻,有的用來發起致命一擊。

那麼問題來了,假設鳴人的查克拉能量為 m,他影分身的個數最多為 n,那麼製造影分身時有多少種不同的分配方法?

注意:影分身可以分配0點能量。

分配方案不考慮順序,例如:m=7,n=3,那麼 (2,2,3) 和 (2,3,2) 被視為同一種方案。

輸入格式

第一行是測試資料的數目 t。

以下每行均包含二個整數 m 和 n,以空格分開。

輸出格式

對輸入的每組資料 m 和 n,用一行輸出分配的方法數。

資料範圍

0≤t≤20,

1≤m,n≤10

輸入樣例:

17 3

輸出樣例:

8**如下:

#include

using

namespace std;

int cnt,n,m;

const

int n =

1010

;int dp[n]

[n];

intmain()

cout<[m]<}return0;

}

m個蘋果放入n個盤子問題

這個問題,看似是乙個簡單的排列組合問題,但是加上不同的限制條件,會演變成不同的問題,感覺很奇妙,就總結一下列舉下來 問題一 問題描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問有多少種不同的分法?注 5,1,1和1,1,5是同一種分法 解題分析 設f m,n 為m個蘋果,n個盤子...

m個蘋果放入n個盤子

放蘋果問題 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?注 5,1,1和1,1,5是同一種分法 解題分析 設f m,n 為m個蘋果,n個盤子的放法數目,則先對n作討論,當n m 必定有n m個盤子永遠空著,去掉它們對擺放蘋果方法數目不產生影響。即if n m ...

m個蘋果放入n個盤子問題,n個盤子不同的問題

網上已經有許多關於,m個蘋果放入n個盤子的問題 盤子相同 但是沒有具體關於n個盤子不同的問題,在這裡根據前面的n個盤子相同的基礎上,進行分析得出相應的遞推公式。針對前一問題這裡不再詳細介紹,具體的網頁鏈結為 問題描述 問題描述 把m個同樣的蘋果放在n個不同的盤子裡,允許有的盤子空著不放,問有多少種不...