//UVA1638PoleArrangement
#include<cstdio>
#include<cstring>
int n, l, r;
const int maxn = 20;
long long d[maxn + 5][maxn + 5][maxn + 5];
long long dp(int i, int j, int k) {//i爲已經安排好的杆的數量,j爲從左邊看,k爲從右邊看
if(i && (k == 0 || j == 0)) return 0;
if(i < j || i < k) return 0;
if(i == 1) return 1;
if(d[i][j][k] >= 0) return d[i][j][k];
return d[i][j][k] = dp(i - 1, j, k - 1) + dp(i - 1, j - 1, k) + dp(i - 1, j, k) * (i - 2);
}
int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%d%d%d", &n, &l, &r);
memset(d, -1, sizeof(d));
printf("%lld\n", dp(n, l, r));
}
return 0;
}
/*
4
4 1 2
4 1 1
5 2 4
20 2 1
*/
UVA1638PoleArrangement
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.