本帖最后由 kick068 于 2020-4-7 17:02 编辑
[Asm] 纯文本查看 复制代码 l = [] #例:l = [20,25,30,40,45,70,80]
def combination(l, n):
l = list(sorted(filter(lambda x: x <= n, l)))
combination_impl(l, n, [])
def combination_impl(l, n, stack):
if n == 0:
print(stack)
return
for i in range(0, len(l)):
if l[i] <= n:
stack.append(l[i])
combination_impl(l[i + 1:], n - l[i], stack)
stack.pop()
else:
break
combination(l, 100) #l 筛选出l里面的数字的和是100的几种方法
例子得出来的结果:[Asm] 纯文本查看 复制代码 D:\app\venv\Scripts\python.exe D:/app/scratch.py
[20, 80]
[25, 30, 45]
[30, 70]
Process finished with exit code 0
PS:假如我知道结果为100 当l = [33,70,88,50 ] 里面输入的数据不能得到100.怎么写 让其筛选出来最接近的几个数据,并且筛选后和最终结果的差值。
顺便怎么把结果和 l 里面 修改为input键入。~~ 求大神改改~ |