题目:一共来了n(0<n<25)个同学,按照组队规则(自由组队,每队人数不限),一共会有多少种不同的组队方案呢?
递推式是:a[i][j]=a[i-1][j-1]+a[i-1][j]*j;
而且。a[i][0]应该是为0,不为1的。
此外还得注溢出。要用__int64类型。
http://acm.hdu.edu.cn/showproblem.php?pid=1292
#include<stdio.h>
int main() {
int t, n, i, j;
__int64 a[26][26];
a[1][1] = 1;
a[1][0] = 0;
for (i = 2; i <= 25; i++) {
a[i][0] = 0;
a[i][i] = 1;
for (j = 1; j < i; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j] * j;
}
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
__int64 sum = 1;
for (i = 2; i <= n; i++)
sum += a[n][i];
printf("%I64d\n", sum);
}
return 0;
}
posted on 2010-10-11 20:03
孟起 阅读(568)
评论(0) 编辑 收藏 引用 所属分类:
递推 递归