【題解】盒子與球
阿新 • • 發佈:2019-04-06
div pac 滿了 hid 格式 names hide namespace ()
題目描述
n個有區別的球放到m個相同的盒子中,要求無一空盒,其不同的方案用S(m,n)表示,稱為第二類Stirling數。
輸入輸出格式
輸入格式
一行,兩個整數為n,m。(1≤n≤10,1≤m≤10)
輸出格式
一行,表示其對應的方案數。
輸入輸出樣例
輸入樣例
3 2
輸出樣例
3
題解
假設已經放了$(i-1)$個球,總共有$j$個盒子。
如果這些球放滿了$(j-1)$個盒子,顯然第$i$個球只能放在第$j$個盒子裏。
但如果這些球放滿了$j$個盒子,那第$i$個球的放置就有$j$種選擇。
得出遞推式為:$a[i][j]=a[i-1][j]\times j+a[i-1][j-1]$
#include <iostream> #include <cmath> using namespace std; int n, m; int a[11][11]; int main() { cin >> n >> m; a[1][1] = 1; for(int i = 2; i <= n; i++) {參考程序for(int j = 1; j <= min(i, m); j++) { a[i][j] = a[i - 1][j] * j + a[i - 1][j - 1]; } } cout << a[n][m]; return 0; }
【題解】盒子與球