最近在用 Python 做一个图形化界面 tkinter 的小工具,目的是为了把一个集合里的所有组合给遍历出来,与另外给定的一个值相匹配,把相等的那些组合输出。
本来用的 combinations,但是后来集合里的数一多之后,程序容易未响应
后来查到用二进制位运算的方法,https://blog.csdn.net/bquau/article/details/88836357
但是当集合里的数达到 47 个的时候,程序也未响应了,不知道各位大佬有没有什么办法啊~
arr = "$57,297.60 $53,573.02 $109,771.72 $43,386.68 $50,667.74 $50,171.84 $50,116.20 $54,679.96 $180,469.76 $48,363.96 $53,830.44 $54,882.94 $39,291.00 $42,284.76 $56,562.80 $50,566.64 $49,074.30 $49,547.44 $57,377.27 $78,517.60 $98,067.60 $59,814.15 $48,171.20 $53,398.52 $53,855.76 $159,975.77 $104,100.16 $49,196.98 $56,236.80 $48,394.16 $48,516.08 $51,086.12 $176,979.69 $48,359.82 $38,507.20 $47,707.80 $45,640.80 $45,691.18 $39,096.42 $39,102.40 $48,984.36 $101,147.01 $96,127.95 $38,416.00 $36,247.80 $35,989.12 $40,142.10"
su = "537754.94"
1
naix1573 OP 找到一个 java 实现的,用着没问题,可惜我不知道这个用 python 要怎么写啊,头疼
https://www.cnblogs.com/zlingh/p/4040742.html 我把数组重新发一下 ['57297.60', '53573.02', '109771.72', '43386.68', '50667.74', '50171.84', '50116.20', '54679.96', '180469.76', '48363.96', '53830.44', '54882.94', '39291.00', '42284.76', '56562.80', '50566.64', '49074.30', '49547.44', '57377.27', '78517.60', '98067.60', '59814.15', '48171.20', '53398.52', '53855.76', '159975.77', '104100.16', '49196.98', '56236.80', '48394.16', '48516.08', '51086.12', '176979.69', '48359.82', '38507.20', '47707.80', '45640.80', '45691.18', '39096.42', '39102.40', '48984.36', '101147.01', '96127.95', '38416.00', '36247.80', '35989.12', '40142.10'] |
2
bnm965321 2020-08-25 11:36:37 +08:00
是直接遍历 combinations 生成器么?
|
3
binux 2020-08-25 11:43:26 +08:00
你的意思是 k-sum ?
|
6
JeffGe 2020-08-25 11:57:00 +08:00 via Android
程序未响应只是你的计算比较花时间,计算过程中单线程的 Python 没法响应图形更新而已,你把计算交给另一个进程就可以了
|
7
renmu123 2020-08-25 11:58:34 +08:00 via Android
笛卡尔积?我记得 Python 的 itertools 标准库有实现,你看一下
|