• HDU1028Ignatius and the Princess III母函数入门


    这个题也能够用递归加记忆化搜索来A,只是因为这题比較简单,所以用来做母函数的入门题比較合适


    以展开后的x4为例,其系数为4,即4拆分成1、2、3之和的拆分数为4;

    即 :4=1+1+1+1=1+1+2=1+3=2+2

    这里再引出两个概念整数拆分和拆分数:

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <string>
    #include <iostream>
    #include <map>
    #include <cstdlib>
    #include <list>
    #include <set>
    #include <queue>
    #include <stack>
    using namespace std;
    int b[200],a[200];
    int main()
    {
        int n;
        int i,j,k;
        while(cin>>n)
        {
            for(i=0;i<=n;i++)//这是对第一个表达式进行初始化
            {
                a[i]=1;
                b[i]=0;
            }
            for(i=2;i<=n;i++)// i从2到n遍历,这里i就是指第i个表达式,上面给出的另外一种母函数关系式里,每个括号括起来的就是一个表达式。
            {
                for(j=0;j<=n;j++)//j 从0到n遍历,这里j就是仅仅一个表达式里第j个变量,比方在第二个表达式里:(1+x2+x4....)里。第j个就是x2*j.
                {
                    for(k=0;k+j<=n;k+=i) //k表示的是第j个指数。所以k每次增i(由于第i个表达式的增量是i)。
                    b[j+k]+=a[j];
                }
                for(j=0;j<=n;j++)//把b的值赋给a,而把b初始化为0,由于b每次是从一个表达式中開始的
                {
                    a[j]=b[j];
                    b[j]=0;
                }
            }
            cout<<a[n]<<endl;
        }
        return 0;
    }


  • 相关阅读:
    Arduino nano的bootloader文件烧录
    arduino通信问题的学习与解决
    arduino中的serial .available()和serial.read()
    arduino 通过串口接收string,int类型数据
    Arduino读取串口数据并进行字符串分割
    Arduino 的读串口与写串口
    代理模式
    策略模式
    python中的深拷贝
    Python中的三个特殊函数
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5054670.html
Copyright © 2020-2023  润新知