`
dowhathowtodo
  • 浏览: 828050 次
文章分类
社区版块
存档分类
最新评论

放苹果与整数划分问题(by幻星总结)

 
阅读更多
放苹果与整数划分问题(by幻星总结)
以下均假设m>n,对于m<=n情况请编程时自己注意
h(m,n)表示m个数分成n分,允许某分为0
g(m,n)表示m个数分成n分,不允许某分为0
于是两者关系为h(m,n)=g(m+n,n)
下面给出两种方法求h(m,n),g(m,n)关于自身的递归公式
()利用h(m,n)=sum(g(m,i),i=1..n)
(a)h(m,n)的递归公式
h(m,n)=sum(g(m,i),i=1..n)
=sum(h(m-i,i),i=1..n)
=h(m-n,n)+ sum(h(m-i,i),i=1..n-1)
=h(m-n,n)+h(m,n-1)
(b)g(m,n)的递归公式
g(m,n)=h(m-n,n)
=sum(g(m-n,i),i=1..n)
=g(m-n,n)+ sum(g(m-n,i),i=1..n-1)
=g(m-n,n)+ sum(g((m-1)-(n-1),i),i=1..n-1)
=g(m-n,n)+g(m-1,n-1)
()直接从意义上获得递归公式
(a)h(m,n)的递归公式
h(m,n)可以分为至少一分为空h(m,n-1)和一分都不为空h(m-n,n)
h(m,n)=h(m-n,n)+h(m,n-1)
(b)g(m,n)的递归公式
g(m,n)可以分为至少一分为1g(m-1,n-1)和一分都不为1g(m-n,n)
g(m,n)=g(m-n,n)+g(m-1,n-1)
递归关系有了,就可以DP
分享到:
评论

相关推荐

    整数划分问题(实现代码)

    整数划分问题的实现代码 整数划分问题是将一个正整数 n 拆成一组数连加并等于 n 的形式,且这组数中的最大加数不大于 n。这是一种经典的组合数学问题,具有重要的理论价值和实践应用价值。 在解决整数划分问题时,...

    整数划分问题、具体算法实现

    总结来说,整数划分问题的C语言实现涉及到递归和动态规划两种主要方法。虽然递归算法更直观,但动态规划在效率和空间复杂度上具有优势。在实际编程中,需要根据问题规模和性能要求选择合适的方法,并注意优化细节以...

    整数划分问题

    ### 整数划分问题详解 #### 一、整数划分问题概述 整数划分问题是一个经典的组合数学问题,主要研究如何将一个正整数分解为若干个正整数之和的不同方式。这个问题不仅在数学领域有广泛的应用,在计算机科学、算法...

    hutc-整数划分问题 参考代码

    ### hutc-整数划分问题 参考代码 #### 整数划分问题概述 整数划分问题是一个经典的组合数学问题,其目标是将一个正整数拆分成若干个正整数之和的不同方式的数量。例如,整数4可以被划分为5种不同的方式:4、3+1、2...

    整数划分问题java源码

    在中国科学技术大学软件学院开设的《算法设计与分析》课程中,整数划分问题被设为实验题,目的在于引导学生深入探索算法的设计、实现以及分析过程。学生在解决这一问题时,通常会用到递归或动态规划等编程技术。递归...

    整数划分问题 回溯法 深度优先遍历

    整数的分划问题 将正整数n表示成一系列正整数之和,n=n1+n2+...+nk,其中n1&gt;n2&gt;...&gt;nk,k&gt;=1。正整数n的不同划分个数称为n的划分数

    整数划分,并输出结果

    ### 整数划分算法解析与实现 #### 一、整数划分的概念 整数划分是组合数学中的一个重要概念,指的是将一个正整数表示为若干个正整数之和的不同方式的数量。例如,数字4可以被划分为1+1+1+1、1+1+2、1+3或4本身等几...

    java算法分析与设计之整数划分问题源代码

    java算法分析与设计之整数划分问题源代码 算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,...

    11088 整数划分的扩展问题

    根据给定的信息,我们可以推断出这是一个与整数划分(Integer Partition)相关的算法问题。整数划分是指将一个正整数表示为多个正整数之和的方法,且这些加数的顺序不重要。例如,数字4可以被划分为4、3+1、2+2、2+1...

    整数划分代码实现

    整数划分是一个经典的数学问题,它涉及到将一个正整数N划分为若干个正整数的和,且每个部分可以是1到N之间的任意整数,但不允许重复。在计算机科学中,这个问题常用于算法设计和分析,尤其是在动态规划、递归以及...

    整数划分输出划分情况

    算法:整数划分问题,将一个整数n表示成一系列正整数之和。

    中科大算法导论课程实验 整数划分 代码

    总结来说,中科大算法导论课程的整数划分实验,旨在通过动态规划和ACM竞赛的背景,使学生掌握高级算法的理论与实践,提高他们解决问题的能力。通过Visual Studio 2012这一现代编程工具,学生能够体验到高效的开发...

    整数划分的解析

    整数划分是计算机科学中的一种经典算法问题,主要研究如何将一个正整数拆分成一组非负整数的和,且这些整数的和恰好等于原数。在本例中,我们关注的是最大加数不超过原数的整数划分。这个问题涉及到递归思想和数学...

    整数划分问题(回溯法).mp4

    最近我写了一篇csdn文章:【算法设计与分析】——整数划分问题(回溯法),并且画了一个流程图,为了让大家更加清楚的理解我讲的内容,所以我给大家录了一个讲解视频,希望大家一起进步哦~

    整数划分方法2及代码(有注释)

    总结来说,整数划分方法2是一种利用递归策略解决整数划分问题的算法,尤其适用于需要找出所有可能组合的情况,如循环游戏。在实际应用中,为了优化性能,可以结合动态规划等技术。理解和掌握这种算法对于解决涉及...

    整数划分的回溯法表示

    本篇内容通过Java与C语言两种不同的编程语言来实现整数划分问题的求解,并采用回溯法进行算法设计。 #### 回溯法的基本概念 回溯法是一种通过尝试解决问题所有可能的选项来寻找最优解或所有解的算法策略。其基本...

    C#整数划分源码 整数划分源码

    整数划分在计算机科学中是一个经典的数学问题,特别是在算法设计和数据分析领域有着广泛的应用。它涉及到将一个给定的正整数N分解为若干个正整数的和,这些正整数可以是任意顺序,但不能重复。这个问题在C#编程语言...

Global site tag (gtag.js) - Google Analytics