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

先来弥补一下上一篇文章的遗留问题:要求我们所取的 (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)&&系列突破(整数划分)

    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. [css filter]filter在界面实现滤镜效果

    最近逛当当,发现当当尾品会的首页推荐最底端的商品链接是灰色的图片,然后鼠标hover之后就会变成正常的彩色 肯定不是通过img来改变的,然后直接看了一下源码,其实是用的filter属性 _(:з」∠) ...

  2. 包装类(Wrapper Class)

    1)包装类.针对于原生数据类型的包装.所有的包装类(8个)对位于java.lang包下.java中的8个包装类分别是:Byte,Short,Integer,Long,Float.Double,Char ...

  3. C基础 那些年用过的奇巧淫技

    引言 - 为寻一颗明星 为要寻一颗明星 徐志摩 1924年12月1日<晨报六周年纪念增刊> 我骑著一匹拐腿的瞎马, 向著黑夜里加鞭:—— 向著黑夜里加鞭, 我跨著一匹拐腿的瞎马.// 我冲 ...

  4. java读取各类型的文件

    java读取各类型的文件 用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-d ...

  5. NOJ1103-全排列

    全排列 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 1148            测试通过 : 302  ...

  6. Android操作系统11种传感器介绍

    我们依次看看这十一种传感器 1 加速度传感器 加速度传感器又叫G-sensor,返回x.y.z三轴的加速度数值. 该数值包含地心引力的影响,单位是m/s^2. 将手机平放在桌面上,x轴默认为0,y轴默 ...

  7. 解压vmlinuz和解压initrd(initramfs)

    有时就算只得到一个Linux kernel的rpm包或者直接是编译后的vmlinuz和initrd的binary文件,也需要了解其中的一些细节,可能需要去查找这些binary有没有将我想要的patch ...

  8. simplexml_load_string获取xml节点里的属性值

    http://stackoverflow.com/questions/14359658/get-xml-attribute-using-simplexml-load-string 问: I am us ...

  9. 未能加载文件或程序集“System.Web.Razor”或它的某一个依赖项。文件或目录损坏且无法读取。

    “/”应用程序中的服务器错误. 未能加载文件或程序集“System.Web.Razor”或它的某一个依赖项.文件或目录损坏且无法读取. (异常来自 HRESULT:0x80070570) 说明: 执行 ...

  10. iOS-NSDate 相差 8 小时

    转载自:http://blog.csdn.net/diyagoanyhacker/article/details/7096612 NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地 ...