本帖最后由 香川群子 于 2014-7-15 15:36 编辑
Blenderama 发表于 2014-7-15 13:26
香川老师,目前我看到的算法,在小数凑大数的时候都会死机,比如这个程序我用0.1到9.5步长0.1的一列数字来凑 ...
你的问题【0.1到9.5步长0.1的一列数字来凑70】
完全等效于【1到95 凑700】
计算耗时很长,疑似死机,是因为组合结果数太多、太多:
m = 1 - 95 組合計算 s = 0
求和範囲 h = 700 to 700
n= 8 cnt=3,319
n= 9 cnt=10,601,408
n= 10 cnt=1,304,868,206
n= 11 cnt=50,208,946,674
n= 12 cnt=950,551,914,512
n= 13 cnt=10,768,434,422,248
n= 14 cnt=81,235,145,098,915
n= 15 cnt=435,953,534,475,846
n= 16 cnt=1,739,080,829,837,507
n= 17 cnt=5,316,822,227,264,900
n= 18 cnt=12,732,011,998,801,758
n= 19 cnt=24,257,300,177,172,513
n= 20 cnt=37,178,100,997,971,440
n= 21 cnt=46,180,754,854,047,954
n= 22 cnt=46,696,145,344,726,659
n= 23 cnt=38,503,136,475,068,361
n= 24 cnt=25,866,994,813,121,985
n= 25 cnt=14,110,588,955,181,914
n= 26 cnt=6,211,399,974,681,113
n= 27 cnt=2,185,596,197,169,039
n= 28 cnt=606,539,216,665,453
n= 29 cnt=130,318,229,978,298
n= 30 cnt=21,130,713,135,218
n= 31 cnt=2,494,997,260,931
n= 32 cnt=203,741,548,568
n= 33 cnt=10,638,857,983
n= 34 cnt=312,082,732
n= 35 cnt=4,021,598
n= 36 cnt=12,310
全部 262,267,589,888,939,362 個解。
即超过26亿亿个组合解。
……
解决办法是,你如果只需要其中一些解,那么直接输入求解个数 例如=1000个,那结果很快就出来了。
或者指定元素个数=8 To 12 ,并指定计算深度=128(2^7),那样的话部分结果=3080组解,只要0.02秒就出来了。
|