美文网首页程序员
整数划分问题

整数划分问题

作者: rainumdo | 来源:发表于2017-12-28 14:54 被阅读0次

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

问题分析

这个问题显然要构造递归关系来解决,碰到这个问题时,我们很容易知道当一个整数被分为都是1时,这时应该已经完成了整个递归的过程。如果你已经发现了这一出口,那我们就开始对划分的方式进行分类。
笔者这里分为两类:

第一类 第二类
6=5+1 6=3+3
6=4+2 6=2+2+2
6=4+1+1
6=3+2+1
6=3+1+1+1
6=2+2+1+1
6=2+1+1+1+1
6=1+1+1+1+1+1

我这里就简单的使用是否含有1作为界限,当然也可以使用别的界限,只不过递归的形式就不同了。给定一个整数N,M是N中不超过N的最大整数。
第一类就可以写成F(N,M-1),第二类写成F(N-M,M),即递归表达式
F(N,M)=F(N,M-1)+F(N-M,M)

public static int divInt(int n,int m){
         if (m == 1) return 1;
         if (n <= m) return 1 + divInt(n, n - 1);
         if (m > 1) return divInt(n, m - 1) + divInt(n - m, m);
        return 0;
    } 

相关文章

  • 整数划分问题

    什么是整数划分?将正整数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/ghqvgxtx.html