【面试题求解】
编程题:请编写代码完成以下题目:
(1)随机生成一堆数字作为源
(2)随机生成一堆数字作为目标
(3)设计一个算法计穷举哪些(目标中数字的和)与(源中数字和)一致
(4)所设计的算法必须通过有效方法对产生的结果进行验证
例子:
源: 19,47,20,78,23
目标: 13,6,14,23,33,31,10
预期结果:
源19 = 目标 13 + 6
源47 = 目标 33 + 14
源47 = 目标 14 + 23 + 10
源19 + 47 = 目标 23 + 10 + 33
先对目标做个排序,这样每次比源数据大的就不考虑了省了一笔时间,然后在范围内在进行比较,可以用线程或者并发处理,速度也会快一点
对楼上的再补充一下,还有一种方法可以不用穷举2^n次,而是遍历 sum^2 次,sum是n个数的和。
方法是动态规划的思想,dp[i] = dp[j] +i-j
如果dp[j] 表示j 是求和而来的,如果i-j
存在数组中,那么dp[i]也是可以求和而来。而路径就要用二进制的数字表示。
如果对于那种n基数比较大,但是数组里的数字不大,很合适。
有代码吗? 发来看看 ?...