求把整数5拆分成正整数1/2/3/4的和的形式的方案数

求解思路:
这是一个组合数学问题,使用母函数作为工具进行分析
只用1进行组合的母函数为:

只用2进行组合的母函数为:

同理可得只用3和4进行组合的母函数

将母函数相乘,展开后5次项的洗漱就是组合的方案数

引入c1和c2数组,c1用来存放方案数,c2是一个临时存放方案数的数组,没增加一个数字,就新开始一次Epoch周期,我们可以得到实现代码如下

#include<iostream>
using namespace std;
int c1[100];    //c1 stores the number of types of the given digit
int c2[100];    //c2 is a temperate variable that stores the formal number of the solutionint main(){int n = 5,i,j,k; //n is the number that needs to be dividedfor(i = 0; i <n;i++){c1[i] = 1;c2[i] = 0;}//Initialization for(i=2;i<=n;i++){for(j=0;j<=n;j++)for(k=0;j+k<=n;k+=i){c2[j+k]+=c1[j];}for(j=0;j<=n;j++){c1[j]=c2[j];c2[j]=0;}}//multiply the generation function of each coin one by one and update the indexcout<<c1[5]<<endl;cout<<"I've got it!"<<endl;return 0;}

以下的这个循环是这个算法的关键,可以理解的基础上加以记忆并且能够快速写出来不出错
for(i=2;i<=n;i++){
for(j=0;j<=n;j++)
for(k=0;j+k<=n;k+=i){
c2[j+k]+=c1[j];
}

用母函数(生成函数)求解整数拆分问题相关推荐

  1. 动态规划法求解整数拆分问题

    问题描述 求将正整数n无序拆分成最大数为k(称为n的k拆分)的拆分方案个数,要求所有的拆分方案不重复. 问题求解 设n=5,k=5,对应的拆分方案有: 为了防止重复计数,让拆分数保持从大到小排序.正整 ...

  2. 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )

    文章目录 一.生成函数应用场景 二.使用生成函数求解递推方程 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

  3. 母函数——整数拆分(HDOJ2152)

    最近看到了一些关于母函数的题目,去网上找了一些材料,加上自己的理解,现在可以解决一些简单的问题.那么什么是母函数?其实这个问题我也没有怎么搞懂,通过几个例子来说明一下.下面是转载的一个介绍 http: ...

  4. 整数拆分问题的四种解法

    整数划分问题是算法中的一个经典命题之一 所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+m3+....+mi;(其中mi为正整数,并且1<=mi<=n),则{m1,m2,m ...

  5. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )

    文章目录 一.指数生成函数求解多重集排列示例 2 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

  6. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 )

    文章目录 一.指数生成函数求解多重集排列示例 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

  7. 【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )

    文章目录 一.证明指数生成函数求解多重集排列 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

  8. 【组合数学】指数生成函数 ( 指数生成函数性质 | 指数生成函数求解多重集排列 )

    文章目录 一.指数生成函数性质 二.指数生成函数求解多重集排列 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | ...

  9. 数学上的整数拆分问题

    整数拆分是一个经典的数学问题,我们从小学奥数,一直到大学的组合数学,可能都会遇到.从字面意思来看,是将一个整数拆分成若干整数之和,求的是不同的方案个数.我今天想讨论的问题是 " 无序拆分 & ...

  10. 整数拆分的两种解法(已完成)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 整数拆分 ...

最新文章

  1. xml中的常用操作示例
  2. 有什么办法动态更改yml的值吗_基于Redis实现Spring Cloud Gateway的动态管理
  3. python课设总结_Python技术分享课总结:用Python模拟知乎自动登录
  4. 【后端开发】分析抖音后台架构
  5. http协议建立在以下哪一个协议的基础上_HTTP协议梳理
  6. mysql循环遍历获取_MySQL 全表遍历
  7. 95-24-030-Future-ChannelFuture
  8. 直观理解:为什么A为 n 阶满秩方阵时,Ax=0 只有零解?
  9. python初学小甲鱼_Python零基础入门学习 作者:小甲鱼
  10. Recurrent Neural Network(3):LSTM Basics and 《Inside Out》
  11. Oracle中job_type,【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例
  12. T - hiho字符串 HihoCoder - 1485 (..map的使用把)
  13. Java基础知识陷阱(九)
  14. y480 linux无线网卡驱动,联想y480无线网卡驱动下载
  15. java两级缓存框架J2cache
  16. 弘辽科技:掌握淘宝直通车的工作原理很有必要!其核心是什么?
  17. 【大数据开发必看】项目一 电信客服
  18. 硬件:详细讲解台式电脑上的常用的几个接口!
  19. 《MLB美职棒大联盟》:世界大赛最有价值球员奖
  20. Spyder 中 Reloaded modules 错误的解决方法

热门文章

  1. 超级账本(关键概念)
  2. python打印日历_用Python打印某年日历
  3. 03.NopCommerce功能与特点介绍
  4. latex插图编号_LaTex技巧[26]:Latex重新为图片编号
  5. 让自己的电脑会说话||让电脑在开机时说话
  6. [Latex简明教程] 制作并插入图片
  7. 明解c语言答案第八章,《明解C语言》第1章初识C语言练习题答案(最新整理)
  8. aip通用文档 服务器,为 Rights Management 连接器配置服务器 - AIP | Microsoft Docs
  9. 使用 React-Sketchapp
  10. 为什么4G、5G又称为蜂窝网络?跟蜂窝有什么关系?