解背包问题,如从30个数字里找出6个等于某特定值, 递归、回溯、穷举法那种算法比较快、比较简单?

解决方案 »

  1.   

    我觉得这个问题的关键还是在筛选这一步,把范围尽量缩小。
    具体是:
    1,先排序O(nlogn)
    2,制定筛选规则,比如大于某特定值的排除,最小的六项和小于某特定值的全部排除……
    3,优化最内层循环运算,不如把加法转化为减法,最后一层就成了有序表查找了。理论上讲速度在最坏的情况下要快大约(n/logn),O(n^5*logn)至于细节我就不说了,研究这个很费时间。比如优化其他层的循环,筛选规则必不可少。