UVA1638PoleArrangement

来源:互联网 发布:红三兵炒股软件下载 编辑:程序博客网 时间:2024/06/10 11:46
//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;}/*44 1 24 1 15 2 420 2 1*/

原创粉丝点击