zoukankan      html  css  js  c++  java
  • 母函数(1028Ignatius and the Princess III、1512 排列组合)

    普通型母函数(个数未限制):

    题目链接:1028 Ignatius and the Princess III

    最终AC代码:
    #include <cstdio>
    int main(){
        int i, j, k, n, a[122], b[122];
        while(~scanf("%d", &n)){
            for(i=0; i<=n; i++) a[i]=1, b[i]=0;
            for(i=2; i<=n; i++){
                for(j=0; j<=n; j++){ 
                    for(k=0; k+j<=n; k+=i) //注意这里由于个数为限制 不要理解成 i++ 了
                        b[j+k] += a[j];
                }
                for(j=0; j<=n; j++){
                    a[j] = b[j];
                    b[j] = 0;
                }
            }
            printf("%d
    ", a[n]);
        }
        return 0;
    }

    指数母函数:

    题目链接:1521  排列组合

    最终AC代码如下:

    #include <bits/stdc++.h> 
    using namespace std;
    int main(){
        int i, j, k, n, m, num[12], fac[12];
        double a[12], b[12];
        fac[0] = 1;
        for(i=1; i<12; i++) fac[i] = fac[i-1] * i; //阶乘 
        while(~scanf("%d %d", &n, &m)){
            memset(a, 0, sizeof(a));
            memset(b, 0, sizeof(b));
            for(i=1; i<=n; i++) scanf("%d", &num[i]); //记住这里 i 从1开始 
            //初始化 a[] 即第一个(.....) 并且第 i 项表示x的指数为 i 
            for(i=0; i<=num[1]; i++) a[i] = 1.0 / fac[i];
            //进行乘项操作 i 表示所乘大项,即第几个(.....) 
            for(i=2; i<=n; i++){
                for(j=0; j<=m; j++){ //每次只关心幂数<=m 项的系数
                    //乘以第 i 个(.....) j+k<=m 可以提前退出 避免计算幂次高于m项的系数结果 
                    for(k=0; k<=num[i]&&j+k<=m; k++) b[j+k] += a[j]/fac[k];
                }
                for(j=0; j<=n; j++){
                    a[j] = b[j]; //a[]保存当下结果 
                    b[j] = 0; //b[]初始化,作为下次缓存 
                }
            }
            printf("%.0f
    ", a[m]*fac[m]);
        }
        return 0;
    }
  • 相关阅读:
    /etc/fstab 文件解释
    CRLF和LF
    Git远程操作详解
    jsp错误处理
    jsp隐式对象
    关于循环队列要注意的
    JSP动作元素
    JSP指令
    jsp语法简介
    jsp声明周期
  • 原文地址:https://www.cnblogs.com/heyour/p/12652642.html
Copyright © 2011-2022 走看看