首页 新闻 会员 周边 捐助

设计一个算法计穷举哪些(目标中数字的和)与(源中数字和)一致

0
悬赏园豆:50 [已关闭问题] 解决于 2019-03-06 09:29

【面试题求解】
编程题:请编写代码完成以下题目:
(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

oneweek的主页 oneweek | 初学一级 | 园豆:73
提问于:2019-03-05 11:01
< >
分享
其他回答(2)
0

先对目标做个排序,这样每次比源数据大的就不考虑了省了一笔时间,然后在范围内在进行比较,可以用线程或者并发处理,速度也会快一点

jqw2009 | 园豆:2341 (老鸟四级) | 2019-03-05 11:15
0

对楼上的再补充一下,还有一种方法可以不用穷举2^n次,而是遍历 sum^2 次,sum是n个数的和。

方法是动态规划的思想,dp[i] = dp[j] +i-j 如果dp[j] 表示j 是求和而来的,如果i-j存在数组中,那么dp[i]也是可以求和而来。而路径就要用二进制的数字表示。

如果对于那种n基数比较大,但是数组里的数字不大,很合适。

收获园豆:10
Shendu.CC | 园豆:2138 (老鸟四级) | 2019-03-05 14:42
0

有代码吗? 发来看看 ?...

~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2019-03-17 11:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册