整数划分问题
来源:互联网 发布:2007办公软件下载 编辑:程序博客网 时间:2024/05/16 14:31
将正整数n表示成一系列正整数之和,n=n1+n2+n3+...+nk,其中n1>=n2>=...>=nk>=1,k>=1。
正整数n的这种表示称为正整数n的划分。正整数n的不同的划分个数称为正整数n的划分树,记作p(n)。
算法思路:在正整数n的所有不同的划分中,将最大加数n1不大于m的划分个数记作q(n,m)。
递归式为:
q(n,m)=1 n=1,m=1
q(n,m)=q(n,n) n<m
q(n,m)=1+q(n,n-1) n=m
q(n,m)=q(n,m-1)+q(n-m,m) n>m>1
算法如下:
package cn.aaa;
import java.util.Scanner;
//整数划分问题
public class NumDivide {
//整数划分方法
public static int q(int n,int m){ //n为输入的数,m为能分解的数
if(n<0 || m<0)
return 0;
if(n==1 || m==1)
return 1;
else if(n==m && m>1)
return 1+q(n,m-1);
else if(n==m)
return q(n,n);
return q(n,m-1)+q(n-m,m);
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num = s.nextInt();
System.out.println("正整数num的划分个数为:"+q(num,num));
}
}
结果显示:
- 整数划分问题
- 整数划分的问题
- 整数划分问题
- [算法]整数划分问题
- 整数划分问题
- 【转】整数划分问题
- 整数划分问题解析
- 整数划分问题
- 整数划分问题
- 整数划分问题
- 整数划分问题
- 整数划分问题
- 整数划分问题 POJ1664
- 整数划分问题
- 整数划分问题
- 整数划分问题
- 整数划分问题
- 整数划分问题
- 从源码到apk——apk打包过程
- 软件设计七大原则
- getline用法实例
- Julia: 为什么要设计nothing
- ios常用知识
- 整数划分问题
- Spring第一天学习总结
- 一总结
- 第六周上机实践项目——项目1-分数类的雏形
- Linux内核分析(六)
- 比较实验
- STM8S103 LCD5110例程带字库
- HDU 4123 Bob’s Race(树形DP,rmq)
- 专题一 · 1002