题目描述
把M个不同的桔子放在N个同样的盘子里,不允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)
说明:M=2,N=2时,({1},{2})和({2},{1})是同一种分法。
输入输出格式
输入格式:
一行,包含二个整数M和N,以空格分开。1≤M,N≤10。
输出格式:
一行,一个整数K,可行的方案数。
输入输出样例
输入样例:
7 3
输出样例:
View Code
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; }