大意略。
思路:没有思路,特别是许多情况很难想清楚,于是参考了网上的资料。
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
typedef long long LL;
LL d[14][14][14];
int N, P, R;
void init()
{
memset(d, 0, sizeof(d));
}
void read_case()
{
init();
scanf("%d%d%d", &N, &P, &R);
}
int dp()
{
d[1][1][1] = 1;
for(int i = 2; i <= N; i++)
{
for(int j = 1 ; j <= P; j++)
{
for(int k = 1; k <= R; k++)
{
d[i][j][k] = d[i-1][j-1][k] + d[i-1][j][k-1] + (i-2) * d[i-1][j][k];
}
}
}
return d[N][P][R];
}
void solve()
{
read_case();
LL ans = dp();
printf("%lld\n", ans);
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
solve();
}
return 0;
}