演算法題 模板 N個球放入M個盒子中

2021-10-06 02:34:19 字數 1190 閱讀 8430

也就是所有球都是一樣的,但是盒子有區別,且不能出現空放的情況。

採用插板法,相當於在n-1個空隙中,插入m個盒子,而由於不能有空盒子,所以n個球的最前邊或者最後邊一定會放乙個盒子,所以相當於n-1和間隙中放入m-1個盒子。

c(n-1,m-1), n>=m

0, n先假設m個盒子中都放好了1個球,即假設共有m+n個球,然後情況變為第一種情況,即n+m個球放入m個盒子中,沒有空盒。

c(n+m-1,m-1)

第二類斯特林數

dp[n][m]=mdp[n-1][m]+dp[n-1][m-1],1<=m=0

dp[k][0]=0,k>=1

0,ndp[n-1][m]

如果前邊n-1個球放入了m-1個箱子中(存在乙個空箱子),那麼第n個球必須放到這個空箱子中,即1*dp[n-1][m-1]

屬於情況三+附加條件

令1=[1,m],列舉dp[n][i]並求和即可。

即,假設空箱子的數量是m-1到1,求出所有情況然後加和。

屬於情況三+附加條件

對於盒子求組合(m種不同盒子有m!種組合方式)即可

dp[n][m]*m!

(1)可以理解成情況五+附加條件

(2)由於每種球都有m種選擇,所以是n和m相乘,即m^n

dp[n][m]=dp[n][m-1]+dp[n-m][m], n>=m

dp[n][m]=dp[n][m-1], n只需要求第七種情況中的dp[n-m][m]即可,n>=m

0,n定義:指從n個不同元素中取出m(1≤m≤n)個不同的元素排列成乙個環形,既無頭也無尾。

兩個迴圈排列相同當且僅當所取元素的個數相同並且元素取法一致,在環上的排列順序一致。

可以理解成,不分頭尾的一種直線排列組合,即123,231,312這三種圓排列是相同的。

計算方法

圓排列實際是將多種直線排列都視為一致,所以

(1)m個不同元素的直線排列方式,有m!種,則其圓排列有m!/m=(m-1)!種。

(2)從n個不同元素中,選出m個,其圓排列有c(m,n)*(m-1)!=a(m,n)/m種

定義

計算方法

排列組合 n個球放入m個盒子m 問題 總結

原文 求,盒子都可以分成是否不能區分,和能區分,還能分成是否能有空箱子,所以一共是8種情況,我們現在來一一討論。1.球同,盒不同,無空箱 c n 1,m 1 n m 0,n使用插板法 n個球中間有n 1個間隙,現在要分成m個盒子,而且不能有空箱子,所以只要在n 1個間隙選出m 1個間隙即可 2.球同...

排列組合 n個球放入m個盒子m 問題 總結

求,盒子都可以分成是否不能區分,和能區分,還能分成是否能有空箱子,所以一共是8種情況,我們現在來一一討論。1.球同,盒不同,無空箱 c n 1,m 1 n m 0,n使用插板法 n個球中間有n 1個間隙,現在要分成m個盒子,而且不能有空箱子,所以只要在n 1個間隙選出m 1個間隙即可 2.球同,盒不...

演算法真題02 將n個球裝入m個盒子

第二題 將n個球裝入m個盒子,允許盒子為空,沒有順序,有多少種情況。bitedalu 總方法數f n,m f n,m 1 f n m,n 分為有空盒子和沒空盒子的總數 其實我也沒太懂,先這樣寫著,以後再改 參考資料 m 個相同的球放入n 個相同的盒子裡 include include include...