这个代码不太明白 想知道是什么意思

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