题目描述
把M个不同的桔子放在N个同样的盘子里,不允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)
说明:M=2,N=2时,({1},{2})和({2},{1})是同一种分法。
输入输出格式
输入格式:
一行,包含二个整数M和N,以空格分开。1≤M,N≤10。
输出格式:
一行,一个整数K,可行的方案数。
输入输出样例
输入样例:
7 3
输出样例:
301
思路:第2类斯特林数。
代码:
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int a,b,c[19][19];
int main()
{
cin>>a>>b;
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
if(j==1||i==j)c[i][j]=1;
else if(i<j)c[i][j]=0;
else c[i][j]=c[i-1][j-1]+j*c[i-1][j];
}
}
cout<<c[a][b];
return 0;
}