PHP-两个一维数组,用一个数组中的任意个元素相加怎么样得出另一个数组中的任意一个元素?

发布于 2016-11-01 00:49:50 字数 55 浏览 1217 评论 1

两个一维数组,用一个数组中的任意个元素相加得出另一个数组中的任意一个元素,这个该怎么用PHP写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2016-12-23 01:48:38

设有数组 A{a1,a2,...,an} 和B {b1,b2,...,bn}

希望得出b = FB(), FA(b) = {amin, ... , amax} 且 amin + ... + amax = b , amin <= amax <= b

b = FB(), 任意b可以通过随机B集合得到
FA(b) = {amin, ... , an}
设结果为result = {amin, ... , an}
设resultsum = result中的所有元素和
首先将A从小到大排列,且分成3部分,即负数集合A-、0、正数A+
0可以选择是结果中的一个也可以选择不是其中的一个
则result = {0} 或者 result = {}

如果b为正数:
1、从A+选出结果包含的元素a,其中 a <= b - resultsum
2、遍历之后,则 b - resultsum >= 0
3、如果b - resultsum > 0,则从A-选出结果包含的元素a(result + {a}),其中 abs(a) <= b - resultsum
4、遍历之后, 则 b - resultsum >= 0
5、如果b - resultsum > 0, 则不可能找到相匹配的的结果
如果b为负数:
1、从A-选出结果包含的元素a,其中 abs(a) <= b + resultsum
2、遍历之后,则 b + resultsum <= 0
3、如果b + resultsum < 0, 则从A+选出结果包含的元素a(result + {a}),其中 a <= abs(b + resultsum)
4、遍历之后, 则 b + resultsum <= 0
5、如果b + resultsum < 0, 则不可能找到相匹配的的结果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文