P1287 盒子与球 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/problem/P1287
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,r;
long long jc=1;
int f[11][11]={1};
int main(){
scanf("%d%d",&n,&r);
for(int i=1;i<=n;i++)
for(int j=1;j<=r;j++)
f[i][j]=f[i-1][j-1]+f[i-1][j]*j;//什么意思捏?
for(int i=2;i<=r;i++)
jc*=i;
cout<<f[n][r]*jc;
}
f[i][j]=f[i-1][j-1]+f[i-1][j]*j; //Stirling数的递推公式
for(int i=2;i<=r;i++) jc*=i; //求r的全排列数
方案数=Stirling数 * r的全排列个数,简单理解就是n个球分r组,然后全排列
[第一类Stirling数(第一类斯特林数)] https://blog.csdn.net/qq_39565901/article/details/86683289