美文网首页
【算法基础】整数划分问题

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

作者: 始于足下 | 来源:发表于2018-08-12 01:57 被阅读0次

【问题】将整数n表示为一系列正整数的和。

n = n1 + n2 + ...+ nk (n1 >= n2>=......>=nk>=1,k>=1) 

并称之为n的划分。不同的划分个数称为正整数n的划分数,p(n)

建立如下递归关系:

在不同的划分中,将最大的加数n1不大于m的划分数计做q(n,m)

1.q(n,1) = 1,n >= 1;表示,最大加数小于等于1,就是,n1<=1.而n1>=1,因此n1 = 1,该种类型划分只有一种。

2,q(n,m) = q(n,n),m>=n;因此,m >=n > n1. 对于数字m和n他们划分的最大加数,都不会比n大,就说明划分数相同。

3.q(n,n) = 1 + q(n,n-1);n的划分由n1 = n,和n1 <= n-1构成。

4.q(n,m) = q(n,m-1) + q(n-m,m),n > m > 1;

n的最大划分数n1不大于m的划分数(n1 <= m)由,n1 = m和n1 <= m-1构成。

n1 = m,则n2 + n3 + ...+nk = n - m,在对n-m中找到最大为m的划分。表示为q(n-m,m);

n1 <= m - 1,表为q(n,m-1)

扩展:

【输入】标准的输入包含若干组测试数据。每组测试数据是一行输入数据,包括两个整数N 和 K。 

(0 < N <= 50, 0 < K <= N)

【输出】

对于每组测试数据,输出以下三行数据: 

第一行: N划分成K个正整数之和的划分数目 

第二行: N划分成若干个不同正整数之和的划分数目 

第三行: N划分成若干个奇正整数之和的划分数目

分析:

分为不同正整数包含:

1.n1 <= m -1 ,q(n,m-1)

2.n1 = m;在从n-m中找到最大为加数为m-1的划分。q(n-m,m-1)

q(n,m) = q(n,m-1) + q(n-m,m-1),分为若干不同数的划分数。

分为K个正整数的划分数:

设置f(n,k)表示为k个数的n的划分。

1.k个数中包含1:其余k-1个数去分n-1的划分。f(n-1,k-1)

2.k个数不包含1:每个数都比1大,k个数都分一个1.其余的n - k在分到k个数中的划分数。f(n - k,k)

f(n,k) = f(n - 1,k-1) + f(n - k,k)

分为若干个奇整数的和:

设置x(i,j),数字i划分为j个奇数的划分数,y(i,j)数字i划分为j个偶数的划分数。

1.包含1:减掉1后,i-1需要分配到j-1个奇数中,x(i-1,j-1)

2.不包含1:对j个奇数都减去1后,就是i-j的j个偶数的划分。y(i-j,j)

x(i,j) = x(i - 1,j-1) + y(i-j,j)

或:

1.m奇数。包含m:q(n -m,m),不包含m,q(n,m-1) ;q(n,m) = q(n -m,m) + q(n,m-1)

2.m偶数。q(n,m) = q(n,m-1)

相关文章

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

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

  • 整数划分问题

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

  • 整数划分问题

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

  • 整数划分问题

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

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

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

  • 第24章 背包问题进阶

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

  • 递归--整数划分问题

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

  • 2019-04-13

    # 列生成 ## 介绍 列生成算法是求解大规模整数规划问题的优化算法,其理论基础由Danzig 等于1960 年提...

  • 整数数组前K大的问题

    这类问题是最高频K项的基础问题。问题描述如下:在一个整数数组中,找最大的k个整数 离线算法 这离线处理中,可以使用...

  • 基础算法-Union-Find(动态连通性)--quick-fi

    今天学习的算法是比较基础和典型的算法Union-Find(动态连通性)。 题目介绍 问题的输入是一系列整数对,其中...

网友评论

      本文标题:【算法基础】整数划分问题

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