美文网首页
整数划分问题

整数划分问题

作者: QinRenMin | 来源:发表于2018-03-12 21:51 被阅读0次

什么是整数划分?
将正整数n表示成一系列正整数的和。
例如5的划分:
5
(1) 5;
(2) 4+1;
(3) 3+2 3+1+1;
(4) 2+2+1 2+1+1+1+1;
(5) 1+1+1+1+1;
p(5,4) = 6;
p(5,3) = 5;
p(5,2) = 3;
p(5,1) = 1;
解析:
q(num, m) = 1;
(num=1 or m=1)
q(num,m) = q(num, num); (num<m)
1+ q(num, m-1); (num=m)
q(num-m,m)+q(num,m-1); (num>m)
代码展示

import java.util.*;
import java.util.Scanner;
public class Q
{
    public static void main(String[] args)
    {
        int num,m;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入正整数以及最大划分数");
        num = input.nextInt();
        m = input.nextInt();
        System.out.println(q(num,m));
            
    }
    static int q(int num,int m)
    {
        if( (num < 1) || (m < 1) ) return 0;
        if( num == 1 || m == 1) return 1;
        if(num < m) return q(num,num);
        if( num == m) return q(num,m-1) +1;
        return q(num,m-1)+q(num-m,m);   
    }

}
运行结果截图

相关文章

  • 整数划分问题

    什么是整数划分?将正整数n表示成一系列正整数的和。例如5的划分:5(1) 5;(2) 4+1;(3) 3+2 3...

  • 整数划分问题

    将一个整数划分为多个整数想加的形式,并计算划分方法。例:6的划分:6=5+16=4+26=4+1+16=3+36=...

  • 整数划分问题

    整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整...

  • 递归--整数划分问题

    前置文章:递归算法:www.jianshu.com/p/703069f3ba3f . 在说到递归算法的时候,逃...

  • 【算法基础】整数划分问题

    【问题】将整数n表示为一系列正整数的和。 n = n1 + n2 + ...+ nk (n1 >= n2>=......

  • 动态规划——【转】划分数问题

    整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整...

  • 分治法

    整数划分 所谓整数划分,是指把一个正整数n写成如下形式:n=m1+m2+...+mi; (其中mi为正整数,并且1...

  • NYOJ 90 整数划分

    法一:递归 法二:动态规划 法三:DFS

  • 第24章 背包问题进阶

    1、整数划分 算法1 完全背包求方案数问题 时间复杂度 Java 代码 算法2 时间复杂度 Java 代码 2、猫...

  • 计数DP

    整数划分 原题链接[https://www.acwing.com/problem/content/902/] 方法...

网友评论

      本文标题:整数划分问题

      本文链接:https://www.haomeiwen.com/subject/zfmofftx.html