昨天阿蛋兄给我出了一道题。
- 有一个集合,如{1,2,3,4,5,6,7},需要从中抽取任意个(1-n)元素,进行求和
- 然后结果把结果最接近的组合筛选出来
- 比如预设值是10
- 这样上面的集合中{1,2,3,4},{3,7},{4,6},{1,2,7}等等便是满足条件的组合
这里其实用组合的算法就可以实现了的,温习了组合的算法参考了一些人家的例子,自己写了一个js版本的,不过在集合超过20个数字的情况下效率就变得很低了。
按照组合的两种比较常用的算法(1、递归,2、排序),我现在用的属于“排序”,据说递归的效率也很差。
不知道有没有强人,能够提供一些其它思路或者改进的方法呢?期待ing。。。
Demo的地址:http://blog.chenreal.com/demo/array