| def choose(data,yushu,result): for idx,val in enumerate (data): for x in xrange ( 1 ,yushu / val + 1 ): result.append({ 'size' :val, 'num' :x}) if yushu - val * x = = 0 : finalresult.append(result) choose(newdata,yushu - val * x,result) for idx,val in enumerate (mylist): for x in xrange ( 1 ,total / val + 1 ): if total - x * val = = 0 : finalresult.append([{ 'size' :val, 'num' :x}]) choose(newdata,total - val * x,[{ 'size' :val, 'num' :x}]) |
打出来的result结果显示
[{'num': 1, 'size': 100}, {'num': 4, 'size': 250}]
[{'num': 6, 'size': 100}, {'num': 2, 'size': 250}]
[{'num': 2, 'size': 250}, {'num': 6, 'size': 100}]
[{'num': 4, 'size': 250}, {'num': 1, 'size': 100}]
为什么finalresult里面保存的结果却是
[[{'num': 1, 'size': 100}], [{'num': 6, 'size': 100}], [{'num': 11, 'size': 100}], [{'num': 2, 'size': 250}], [{'num': 4, 'size': 250}]]
这个程序的任务是要取出mylist里面的数的组合等于total的所有组合
类似这样
250*4 + 100*1
100*11
250*2 + 100*6