本文是整数划分的第二节,主要介绍整数划分的一些性质。

先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中  m1 m2 ... mi连续,比如5=1+4就不符合要求了。这个时候的整数划分怎么操作呢?

这个问题的答案是这样的:

假设 n = r + (r + 1) + · · · + (r + k) ,我们需要找到所有的 r,这样我们就能获得划分数目了。

对上式进一步合并我们获得了 (2r + k)(k + 1) = 2n. 我们知道等式右面为一个偶数,而左边两个数的奇偶性是不一样的。所以问题就转化为找到一个奇数和一个偶数使其乘积为2n,这个奇数的种类数就是我们需要的,事实上这等于n的奇因数个数。

接着我们来看一下怎么用图形来表示整数划分:Ferrers Diagrams

比如10=5+3+1+1,那么我们就可以这样来表示:

从这样的表示中我们可以很显然获得一个结论:n的关于m的划分(n划分中的数不超过m)个数 等于 n的划分中元素个数为m个的划分数。

这个结论之所以很显然是因为我们只需要将上图旋转90度就可以获得 划分中元素个数为m的划分了;反之亦然。

求证:关于n的所有划分中不包含1的划分总个数 等于 n的划分总数减去n-1的划分总数,用式子我们可以这么来表示:

f(n) = p(n) − p(n − 1).

证明:

生成函数  =

=

=

当不允许使用1的时候,生成函数为 =

=

=

故而有

  =       (1-x) *    

所以,f(n) = p(n) − p(n − 1).

四 有多少种赋值方式(非负整数)使得 x1 + x2 + x3 + x4 + x5 + x6 = 32

解法一:

组合数学。32个球排成一行,插入五个隔板(可以理解为有标志的球)就可以获得我们需要的划分了,下图是一种划分,

•| • | • • • | • • • • • | • • • • • • • • • •| • • • • • • • • • • • •

答案是C375   ,注意一下底数是37而不是33。

解法二:

整数划分 Integer Partition(二)的更多相关文章

  1. 整数划分 Integer Partition(一)

    话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ...

  2. Integer Partition(hdu4658)2013 Multi-University Training Contest 6 整数拆分二

    Integer Partition Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  3. nyoj_176_整数划分(二)_201404261715

    整数划分(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 把一个正整数m分成n个正整数的和,有多少种分法? 例:把5分成3个正正数的和,有两种分法: 1 1 3 ...

  4. NYOJ-571 整数划分(三)

    此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...

  5. POJ1664(整数划分)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30894   Accepted: 19504 Description ...

  6. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

  7. hdu-2709整数划分 技巧

    整数划分变形,由2^k组成. 整数划分中一个节约内存的技巧,平时我们使用dp[i][j]维护用不大于j的数组合成i的方案数,所以必须dp[i-j][j]->dp[i][j].这样就需要二位,如果 ...

  8. poj1664 放苹果(DPorDFS)&amp;&amp;系列突破(整数划分)

    poj1664放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33661   Accepted: 20824 Desc ...

  9. HDU 4658 Integer Partition (2013多校6 1004题)

    Integer Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

随机推荐

  1. C#软件设计——小话设计模式原则之:单一职责原则SRP

    前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...

  2. linux mysql 常用

    mysql -uroot -p输入密码进入 use database;使用指定的数据库 show tables;显示存在的表:describe 表名; source 目标文件.sql; 可以执行指定的 ...

  3. 9月9日下午HTML样式表(宽度和高度、背景字体、对齐方式边界与边框)

    样式表 一.大小 1.width   宽度 2.height  高度 <div style="width:200px; height:200px"></div&g ...

  4. iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新

    你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...

  5. Windows性能监视器之CPU、硬盘、IO等监控方法详解-摘自网络

    一般操作系统性能主要涉及到的问题主要有:处理器使用情况.内存占有量.磁盘I/0操作以及网络流量等. 查看Windows性能情况,大部分情况下是通过 “Windows任务管理器”,可以通过在 ”命令行” ...

  6. commit日志历史不一致的Git仓库合并

    有个项目,用SVN commit的在国内开源中国的码云托管,可以直接Git clone"导出"一个本地的git仓库,我在Github上新建立了一个远程的仓库,准备把在码云上clon ...

  7. ThinkPHP-3.2.3学习

    一.下载安装 核心包:不用解释,最减版本 完整包:包括扩展功能(验证码.session等) 二.调试 ----www ---thinkphp_3 Application                 ...

  8. javascript--hasOwnProperty()+isPrototypeof()+in方法

    1.hasOwnProperty():用来检测对象中是否包含给出的函数属性或者对象,但是无法检测出对象的原型链中是否包含给出的属性或对象--该属性或者对象必须在函数内部被声明 2.isPrototyp ...

  9. javascript获取系统时间

    function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount); var ye ...

  10. sql server 字符串分割函数

    ),)) )) as begin ) set @SourceSql=@SourceSql+@StrSeprate while(@SourceSql<>'') begin )) insert ...