1011.盒子与球 |
Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 39 Accepted Submission(s): 14 |
Description |
现有r个互不相同的盒子和n个互不相同的球,要将这n个球放入r个盒子中,且不允许有空盒子。则有多少种放法?
|
Input |
n, r(0 <= n, r <= 10)。
|
Output |
有多少种放法。
|
Sample Input |
3 2 |
Sample Output |
6 |
斯特灵数,学习了。
详见wiki http://zh.wikipedia.org/wiki/%E6%96%AF%E7%89%B9%E7%81%B5%E6%95%B0
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int cheng(int n){
int find=1;
while(n>0){
find*=n;
n--;
}
return find;
}
int main(){
int m,n;
int i,j;
long long f[11][11]={0};
cin>>m>>n;
for(i=1;i<=n;i++)
f[i][i]=1;
for(i=1;i<=n;i++)
for(j=i+1;j<=m;j++)
f[i][j]=f[i-1][j-1]+i*f[i][j-1];
cout<<cheng(n)*f[n][m];
return 0;
}