zoukankan      html  css  js  c++  java
  • 紫书 例题 10-14 UVa 12034(组合数+递推)

    这道题有点类似动态规划,设答案为f(n)

    第一个人有i个人,就有c(n,i)种可能

    然后后面有f(n-i)种可能,所以相乘,然后枚举所有可能加起来就ok了。
     

    #include<cstdio>
    #define REP(i, a, b) for(int i = (a); i < (b); i++)
    using namespace std;
    
    const int MAXN = 1123;
    const int MOD = 10056;
    int c[MAXN][MAXN], f[MAXN];
    
    void init()
    {
        REP(i, 0, MAXN)
        {
            c[i][0] = c[i][i] = 1;
            REP(j, 1, i) 
                c[i][j] = (c[i-1][j-1] + c[i-1][j]) % MOD;
        }
    }
    
    int main()
    {
        init();
        f[0] = 1;
        REP(n, 1, MAXN)
        {
            f[n] = 0;
            REP(i, 1, n + 1)
                f[n] = (f[n] + c[n][i] * f[n-i]) % MOD;
        }
        
        int T, n;
        scanf("%d", &T);
        REP(kase, 1, T + 1)
        {
            scanf("%d", &n);
            printf("Case %d: %d
    ", kase, f[n]);
        }
        
        return 0;
    }
  • 相关阅读:
    IDEA
    SpringCloud
    Docker
    Docker
    JDK排序
    选择排序
    冒泡排序
    计算一个整数数组的平均数
    (if语句)中国的个税计算方法
    读入一个表示年份的整数,判断这一年是否是闰年
  • 原文地址:https://www.cnblogs.com/sugewud/p/9819505.html
Copyright © 2011-2022 走看看