整数规划问题
2020-01-15 06:16
260 查看
问题描述
将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,
其中n1≥n2≥…≥nk≥1,k≥1。
正整数n的这种表示称为正整数n的划分。求正整数n的不同划分个数。
例如正整数6有如下11种不同的划分:
6;
5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1。
假设: 将最大加数n1不大于m的划分个数记作q(n,m)
分析:
有如下几种情况:
- q(n,1) n≥1;
当最大数n1不大于1时,任何正整数n只有一种划分形式: n=1+1+…+1(共n个) - q(n,m) m≥n
q(n,n);最大加数n1实际上不能大于n。因此,q(1,m)=1。 - q(n,n)
1+q(n,n-1);正整数n的划分由n1=n的划分和n1≤n-1的划分组成。 - q(n,m) n>m>1
q(n,m-1)+q(n-m,m),n>m>1;正整数n的最大加数n1不大于m的划分由n1=m的划分和n1≤m-1 的划分组成。
可得关系式:
C++代码如下:
#include<iostream> using namespace std; int f(int n,int m){ if(n<1) return 0; else if(n==1||m==1) return 1; else if(n<m) return f(n,n); else if(n==m) return f(n,m-1)+1; return f(n,m-1)+f(n-m,m); } int main(){ int n; n=f(6,4); cout<<n<<" "; return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 数学建模之线性规划问题(含整数规划和0-1规划)
- Lingo与一般整数规划问题
- MATLAB求解线性规划(含整数规划和0-1规划)问题
- 利用Cplex求解非线性带约束的混合整数规划问题
- Java求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包动态规划问题求解)
- Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题
- 整数拆分问题的动态规划解法
- MATLAB求解线性规划(含整数规划和0-1规划)问题
- Wolsey "强整数规划“ 建模的+Leapms实践——无产能批量问题
- 规划问题 0-1型整数规划解法…
- 钢管下料问题用非线性整数规划的数学模型来建模以及用Lingo进行计算
- 关于误差,想到一个 整数规划问题
- 整数规划问题求解算法
- 动态规划解乘法表问题——算法解题报告
- 整数划分问题
- 强化学习(四)---基于模型动态规划问题
- 关于两个整数相除,有余数就向上取整的问题
- 递归--整数划分问题
- 动态规划问题系列---Disk Schedule
- 搞得地图路线规划问题