一道编程题 求算法思路.

问题描述:

一道编程题 求算法思路.
给出n(2
1个回答 分类:综合 2014-11-02

问题解答:

我来补答
因为n比较小,此题最优的解法是双向搜索
做法如下(n=20):
枚举前十个数的放入集合的放法,共3^10种,以两个集合的元素差为key,两个集合的元素和为value,存入哈希表
枚举后十个数的放入集合的放法,以两个集合的元素差为key,查哈希表,这样能查到对应的前十个数的分配方法,就知道总和了
这是最优解法,复杂度为3^(n/2)
这题还有一种经典的动态规划的解法,叫“双塔问题”,复杂度为w*n,w为所有数的总和
 
 
展开全文阅读
剩余:2000