zoukankan      html  css  js  c++  java
  • 题解:HDU1028

    题目描述:

    求用任意个<=n的数相加等于n的方案总数

    解题思路:

    直接推出生成函数 :

    $${f(x)=(x^{0}+x^{1}+x^{2}...) (x^{0}+x^{2}+x^{4}...) (x^{0}+x^{3}...)...}$$

    下面上代码:  

     1//#include<bits/stdc++.h>
    2#include<iostream>
    3#include<cstdio>
    4#include<cstring>
    5using namespace std;
    6int n,f[500],aux[500];
    7int main(){
    8    while (scanf("%d",&n)==1){//生成函数暴力展开 
    9        memset(f,0,sizeof(f));
    10        memset(aux,0,sizeof(aux));
    11        f[0]=1//初始值必有1 
    12        for (int i=1;i<=n;i++){//外层枚举第几个括号(注意从1开始) 
    13            for (int j=0;j<=n;j++)
    14                for (int k=0;k<=n;k++)//aux用作辅助存储 
    15                    if (k*i<=n)
    16                        aux[k*i+j]+=f[j];
    17            for (int j=0;j<=n;j++){
    18                f[j]=aux[j];aux[j]=0;
    19            }//两个相邻的括号合并为大循环一次 
    20        }
    21        cout << f[n] << endl;
    22    }
    23    return 0;
    24}
  • 相关阅读:
    ILockBytes Windows Mobile 6.5
    C# 中 in,out,ref 的作用与区别
    riched32.dll riched20.dll msftedit.dll 解析
    C# 解决窗体假死的状态
    testform
    ParallelProgramming-多消费者,多生产者同时运行并行
    C# 多线程控制 通讯
    C# 多线程
    iSpy免费的开源视频监控平台
    核心J2EE模式
  • 原文地址:https://www.cnblogs.com/titititing/p/9474705.html
Copyright © 2011-2022 走看看