x万博官网手机版登陆为划分后最小的整数

当前位置:万博官网手机版登陆 > 万博官网手机版登陆 > x万博官网手机版登陆为划分后最小的整数
作者: 万博官网手机版登陆|来源: http://www.shirokilaw.com|栏目:万博官网手机版登陆

文章关键词:万博官网手机版登陆,划分算法

  整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。

  在整数划分中实际上最大加数不能大于n,因此在这种情况可以等价为split(n, n);

  这种情况可用递归表示为split(n, m - 1) + 1,从以上例子中可以看出,就是最大加

  从上例可以看出,设m = 4,那split(6, 4)的值是最大加数小于4划分数和整数2的划分数的和。

  首先考虑一般的形式,设n为被划分的正整数,x为划分后最小的整数,如果n有一种划分,那么结果就是x,如果有两种划分,就是x和 x + 1,如果有m种划分,万博官网手机版登陆就是 x 、x + 1 、x + 1 、x + 2 、... 、x + m - 1,将每一个结果相加得到一个公式(i * x + i * (i - 1) / 2) = n,i为当前划分后相加的正整数个数。

  当i = 3时,x = 4, 当i = 4时,4/9,不是正整数,因此,15不可能划分成4个正整数相加。

  这里还有一个问题,这个i的最大值是多少?不过有一点可以肯定,它一定比n小。我们可以做一个假设,假设n可以拆成最小值为1的划分,万博官网手机版登陆如上例中的1 2 3 4 5。这是n的最大数目的划分。如果不满足这个假设,那么 i 一定比这个划分中的正整数个数小。因此可以得到这样一个公式i * (i + 1) / 2 = n,即当i满足这个公式时n才可能被划分。

  要将A划分的话,必然满足 A = n *(n+1) /2 + n * k,所以写代码的时候只要一个循环就能搞定了。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!