`

整数划分

阅读更多
#include <iostream>
using namespace std;

int q(int n,int m) //n划分的最大整数n1<=m的划分个数
{
if(n<1 || m<1) return 0;
if(n==1 || m==1) return 1;
if(n<m) return q(n,n);
if(n==m) return q(n,n-1)+1;
return q(n,m-1)+q(n-m,m);
}

int q2(int n,int m) //正奇数划分
{
if(n<1 || m<1) return 0;
if(n==1 || m==1) return 1;
if(n<m) return q2(n,n);
if(n==m && n%2==1) return q2(n,n-1)+1;
if(n==m && n%2==0) return q2(n,n-1);
//if(n>m && n%2==1)
return q2(n,m-2)+q2(n-m,m);
//return q2(n,m-2)+q2(n-m,m);
}

int q3(int n,int m) //不同正整数划分(将n划分成不同正整数相加)
{
if(n==1 && m==1) return 1;
if(n<0 || m<=1) return 0;
if(n<m) return q3(n,n);
if(n==m) return q3(n,n-1)+1;
return q3(n,m-1)+q3(n-m,m-1);
}

int main()
{
int n,m;
cin >> n >> m;
cout << q(n,n) << endl;
cout << q(n,m) << endl;
cout << q2(n,n) << endl;
cout << q3(n,n) << endl;
return 0;
}
分享到:
评论

相关推荐

    整数划分,并输出结果

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

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

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

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

    整数划分问题是一个经典的计算机科学问题,主要涉及组合优化和图论领域。在数学上,它指的是给定一个正整数n,寻找所有可能的方法将其分成若干个正整数的和,每个正整数称为一个部分。每个不同的部分组合构成一个...

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

    整数划分方法是计算机科学和算法设计中的一个重要概念,它涉及到如何将一个给定的正整数分成若干个正整数的和。在本场景中,我们关注的是“整数划分方法2”,这是一种递归解决方案,特别适用于解决循环游戏问题。 ...

    整数划分的解析

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

    整数划分代码实现

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

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

    整数划分方法1是一种在计算机科学和算法设计中常见的问题,它涉及到将一个给定的非负整数拆分为若干个正整数之和,这些正整数的和必须等于原始整数。这个问题通常用于解决各种数学问题,例如在游戏理论中的循环游戏...

    整数划分的vs2010实现

    整数划分是一个经典的数学问题,它在计算机科学和算法设计中有着广泛的应用。在这个问题中,目标是将一个正整数n分解为若干个正整数的和,这些正整数互不相同,且可以按任意顺序排列。VS2010是Microsoft Visual ...

    整数划分的回溯法表示

    ### 整数划分的回溯法表示 #### 知识点概述 整数划分问题是一个经典的组合数学问题,指的是将一个正整数拆分成若干个正整数之和的方法数。例如,数字6可以被拆分为`6`, `5+1`, `4+2`, `4+1+1`, `3+3`, `3+2+1`, `3...

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

    **整数划分问题** 整数划分是组合优化领域的一个经典问题,源于数学和计算机科学。在整数划分问题中,我们需要找到一个非负整数序列(可以为空),使得这些整数之和等于给定的正整数S,且序列中的每个元素都不相同...

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

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

    整数划分问题java源码

    整数划分问题是一个经典的计算机科学中的算法问题,它在数学和计算机科学的多个领域都有应用。在这个Java源码中,我们可以看到如何解决这个问题。中国科学技术大学软件学院的《算法设计与分析》课程通过这个实验,...

    整数划分输出划分情况

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

    整数划分(C语言实现)

    整数划分是一个经典的数学问题,它涉及到将一个正整数N表示为若干个正整数之和,且每个正整数不重复。这个问题在计算机科学中有多种应用,比如在组合优化、图论以及数据结构等领域。C语言作为基础的编程语言,常常被...

    整数划分问题

    ### 整数划分问题详解及递归算法实现 #### 一、整数划分问题定义 整数划分问题是指将一个正整数 \( n \) 拆分成一组正整数的和,使得这些正整数的总和等于 \( n \),并且这组数中的最大加数不超过 \( n \)。 例如...

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

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

    整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。

    ### 整数划分问题概述 整数划分问题是一种经典的组合数学问题,主要研究如何将一个正整数表示为若干个正整数之和的方式。在本问题中,我们需要找到一个正整数\( n \)的所有可能的划分方式,并计算出这些划分的数量...

Global site tag (gtag.js) - Google Analytics