http://blog.csdn.net/u011889952/article/details/44813593

整数拆分问题的四种解法

原创 2015年04月01日 21:17:09

整数划分问题是算法中的一个经典命题之一

所谓整数划分,是指把一个正整数n写成如下形式:

n=m1+m2+m3+....+mi;(其中mi为正整数,并且1<=mi<=n),则{m1,m2,m3,....,mi}为n的一个划分。

如果{m1,m2,m3,....,mi}中的最大值不超过m,即max{m1,m2,m3,....,mi} <= m,则称它属于n的一个m划分。这里我们记n的m划分的个数为f(n,m);

例如当n=4时,它有5个划分:{4}、{3,1}、{2,2}、{2,1,1}、{1,1,1,1};

注意:4=1+3和4=3+1被认为是同一个划分。

该问题是求出n的所有划分个数,即f(n,n)。下面我们考虑求f(n,m)的方法。

方法一:递归法

根据n和m的关系,考虑下面几种情况:

(1)当n=1时,不论m的值为多少(m>0),只有一种划分,即{1};

(2)当m=1时,不论n的值为多少(n>0),只有一种划分,即{1,1,....1,1,1};

(3)当n=m时,根据划分中是否包含n,可以分为两种情况:

(a)划分中包含n的情况&

python整数拆分dp算法_整数拆分问题的四种解法【转载】相关推荐

  1. 干支纪年法简便算法_初中历史所涉及的四种纪年法

    一.公元纪年法 公元纪年,也称公历纪年,或基督纪年.它以相传的耶稣基督诞生年即公元元年作为历史算起,在中国这一年正好是西汉平帝元始元年.以这一年为界,在此以前的时间称公元前多少年,在此以后的时间和公元 ...

  2. 干支纪年法简便算法_初中阶段常用的四种历史纪年法

    一.公元纪年法 公元纪年,也称公历纪年,或基督纪年.它以相传的耶稣基督诞生年即公元元年作为历史算起,在中国这一年正好是西汉平帝元始元年.以这一年为界,在此以前的时间称公元前多少年,在此以后的时间和公元 ...

  3. 算法-寻找数组中的重复值,四种解法

    算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...

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

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

  5. python 整数逆位运算_整数及其位运算

    整数及其位运算 整数具有无限精度.有四种整数表示法:十六进制整数(0x 或 0X 开头),十进制整数,八进制整数(0o 或 0O 开头)和二进制整数(0b 或 0B 开头). # 十六进制 0x10 ...

  6. python实现希尔排序算法_排序算法总结(冒泡排序、直接插入排序、希尔排序)(python实现)...

    其实本文叫排序算法总结有点过了,只是用python实现了一遍.本文都是参照一篇csdn博客<数据结构排序算法>,里面详细介绍每种排序算法的原理,并给出了C++的实现,再次膜拜. # -*- ...

  7. python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码

    利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...

  8. python贝叶斯优化算法_【干货】手把手教你Python实现自动贝叶斯调整超参数

    [导读]机器学习中,调参是一项繁琐但至关重要的任务,因为它很大程度上影响了算法的性能.手动调参十分耗时,网格和随机搜索不需要人力,但需要很长的运行时间.因此,诞生了许多自动调整超参数的方法.贝叶斯优化 ...

  9. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...

最新文章

  1. 教程 | 以太坊智能合约编程之菜鸟教程
  2. 惊呆了,JDK中这些常用方法也有Bug?
  3. [云炬python3玩转机器学习笔记] 2-7开发环境搭建笔记
  4. Linux下的gdb调试makefile的编写
  5. git使用的基本流程_git命令的基本使用
  6. Effective C++学习第九天
  7. class-dump获取iOS私有api
  8. Linux相关图解随记
  9. 【kafka】google提供的一些好用的并发工具类
  10. 路由器下接路由器设置方法(路由器级联)
  11. Mysql自动设置时间(自动获取时间,填充时间)
  12. [Swift]LeetCode609. 在系统中查找重复文件 | Find Duplicate File in System
  13. Android入门笔记08
  14. 洛谷P1990 覆盖墙壁(递推)
  15. ABAQUS6.10 VS2008 Intel fortan11.1
  16. SPSS23第二版课后习题答案_全新版大学进阶英语综合教程3 Unit1unit3课后习题答案...
  17. 二阶无源低通滤波器幅频特性曲线_低通无源滤波器设计-详细
  18. 微信公众账号api开发
  19. reflector 插件_Reflector Plus Plus-插件,IronPython和其他Peli Goodness
  20. 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId

热门文章

  1. 我国计算机领域研究的状况文档,计算机应用现状与发展趋势.doc
  2. android怎么用命令安装软件,android使用adb命令安装软件
  3. 今日金融词汇---BP
  4. 寒假集训1字符串专题
  5. java服务器访问白名单
  6. 网络安全 期末复习 (山东农业大学)
  7. 上海踩踏事件所想,莫把应急预案当摆设
  8. Python打印菱形
  9. 遥感期刊影响因子(中科院分区)
  10. Vuepress2版本打包报错:TypeError: Invalid value used as weak map key