python实现整数分为几个数的和
问题重述:
如何实现整数分为几个数的和,可以理解为一个整数的分箱问题
简单叙述解题思路:
比如:4这个整数,最多分为4个箱(1,1,1,1);最少一个箱(4)
所以我们定义一个长度为四的数组,每个数组最大能取到4(所以想到5进制),开始循环遍历(四个元素之和等于4即满足条件)
0001
0002
0003
0004(满足)
0010
0011
0012
0013(满足)
0014
0020
......
4440
4441
4442
4443
4444
当然啦这过程中会有重复的分箱,比如
0004
0040
0400
4000
所以在写程序的时候把满足相加等于4的元素,把含有0的全部弹出来,之后再出重就得到答案了。
废话不多说,代码实现如下:
程序中的a的就是我们输入的一个整数值,这里的a取list的长度
#-*-encoding=utf-8-*-
import itertools
from itertools import product
import numpy as np
def max_values(n,x):
max_value=0
iters=np.arange(0,x,1)
for i in iters:
max_value= np.power((n-x+2),i)*(n-x+1)+max_value
return max_value
def min_values(n,x):