|
本帖最后由 香川群子 于 2014-1-9 21:14 编辑
最近发现、各种凑数、凑金额的求助帖还是比较多。
有人建议用规划求解……
但缺点是显而易见的:
源数据个数较多时计算很长时间不会有结果;往往不能精确匹配;只能给出一组近似解……
也有人亲力而为,为求助者写循环代码计算出结果了……
计算效率非常之低就不说了,显然不具有通用性,应该是属于吃力不讨好的工作。
…………
我因为彭版出过的一道求1-100总和=100的所有组合解(共444,793个)的帖子,
所以研究了速度最快的递归组合求和算法。
后来发现这个题目很有实用价值,用来解决凑数、凑金额问题,几乎是手到擒来。
但是考虑到实际需求,于是又不断做了很多改进(牺牲了一些计算速度效率),
但实用性大为提高,最后得到的程序功能之多之全、功力之大,前所未见。
趁着今天休息在家,就把程序重新整理了一遍、并且加了一些简要的注释,把代码公开。
希望能给大家一个惊喜!
凑数字凑金额的最佳递归程序by_kagawa.rar
(26.84 KB, 下载次数: 14424)
附件做了一次更新……递归计算深度参数的设置做了改进:
1. 默认留空=0时,按10万次(10^5=100000)大约相当于16.5层的组合
2. 输入>0 的正整数时,按输入值作为递归计算深度
(该数值可大可小,小了速度快但可能漏掉很多组合解……大了速度降低)
3. 输入<0的负数如=-1时,不限制递归计算深度……每次都是计算直到有解了或者达到剪枝条件时才清零退出
|
评分
-
58
查看全部评分
-
|