第二类斯特林数:
将n个不同的物体分到m堆里(堆没有区别),有递推式f(n,m)=m*f(n-1,m)+f(n-1,m-1)
#include<stdio.h>
#include<string.h>
using namespace std;
const int mod=1e9+7;
int dp[1000][1000];
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
dp[0][0]=1;//初始化
for(int i=1; i<=n; i++)
dp[i][1]=1;//初始化
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
dp[i][j]=(j*dp[i-1][j]+dp[i-1][j-1])%mod;
printf("%d\n",dp[n][m]);
}
return 0;
}