需要将图片中的金额,不限数量,凑到10000元整
合起来,凑一万元开票用
来个简单,全组合遍历,要跑比较久 , 部分数据出来了
num_list = [1646.96,2058.7,596,596,6860,1960,6860,5572.8,1078.8,11160,6860,2838,2009,3016.88,10560,2912,1646.96,823.48,823.48,823.48,1646.96,2380,1188,4760,4296.32,4860,3117.8,17050.3,8400,25764,5580,6480,35836,4960,7632,2792,3307.6,6480,6860,7632,3950,8400,10320,3293.92,12561.6,35836,3950,1646.96,3307.6,6860,4104.8,10677,5338.5,3304,4200,2940,10485,4955,4200,3240,2160,8388,2058.7,60000,3950,9993.2,11650,4202,10560,7140,5580,3360,35836,1218,1190,5440,5580,3343.2,1290,5355,19200,5580,4760,70800,4860,9380]
for n in num_list:
if n > 10000:
num_list.remove(n)
print(len(num_list))
def test(nums):
from itertools import combinations
result = []
cnt = 0
for l in range(1,len(nums)):
cdata = combinations(nums, l)
for i in cdata:
if sum(list(i)) == 10000:
print(list(i))
cnt = cnt + 1
result.append(list(i))
return result,cnt
data,cnt = test(num_list)
print(len(data))
print(cnt)
????
把 数值直接贴出来呗。
就像这样
lst = [1646.96,2058.7, ..... 6480]
有条语句要调整,不然内存会爆
num_list = [1646.96,2058.7,596,596,6860,1960,6860,5572.8,1078.8,11160,6860,2838,2009,3016.88,10560,2912,1646.96,823.48,823.48,823.48,1646.96,2380,1188,4760,4296.32,4860,3117.8,17050.3,8400,25764,5580,6480,35836,4960,7632,2792,3307.6,6480,6860,7632,3950,8400,10320,3293.92,12561.6,35836,3950,1646.96,3307.6,6860,4104.8,10677,5338.5,3304,4200,2940,10485,4955,4200,3240,2160,8388,2058.7,60000,3950,9993.2,11650,4202,10560,7140,5580,3360,35836,1218,1190,5440,5580,3343.2,1290,5355,19200,5580,4760,70800,4860,9380]
for n in num_list:
if n > 10000:
num_list.remove(n)
print(len(num_list))
def test(nums):
from itertools import combinations
result = []
cnt = 0
for l in range(1,len(nums)):
print('选{}项'.format(l))
cdata = combinations(nums, l)
for i in cdata:
if sum(list(i)) == 10000:
print(list(i))
result.append(list(i))
cnt = cnt + 1
return result,cnt
data,cnt = test(num_list)
print(len(data))
print(cnt)