随笔-19  评论-1  文章-0  trackbacks-0
题目:一共来了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 孟起 阅读(543) 评论(0)  编辑 收藏 引用 所属分类: 递推 递归

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理