复杂性/PHP-数组中的任何整数组合都等于另一个整数
我的数学和复杂度计算很差,所以我想请你帮忙 我需要编写一个函数,它接受一个整数数组和另一个整数,如果数组中的任何整数组合(sum)等于另一个整数,则返回true,否则返回false 我所能达到的最好结果是复杂性/PHP-数组中的任何整数组合都等于另一个整数,php,time-complexity,Php,Time Complexity,我的数学和复杂度计算很差,所以我想请你帮忙 我需要编写一个函数,它接受一个整数数组和另一个整数,如果数组中的任何整数组合(sum)等于另一个整数,则返回true,否则返回false 我所能达到的最好结果是O(n!)-相当新的性能 你能帮我用一种更有效的方式写这样一个函数吗? 或者至少给我一个提示。我想你可以这样做 if(sum(intgers))另一个整数结束此树 else当前=结果 使用新数据执行步骤3。递归等等 事实上,它可以给你蛮力,它对数据有依赖性。 例如(1,2,3,4,5,6,7,8
O(n!)
-相当新的性能
你能帮我用一种更有效的方式写这样一个函数吗?
或者至少给我一个提示。我想你可以这样做
希望这是可以理解的。我想你可以这样做
希望这是可以理解的。但这也有
O(n!)
性能,所以与OPs解决方案相比没有进步。这可能非常相似。是的,就时间复杂度而言,在现实世界中,它通常会提供很好的性能,但正如我提到的,对于坏数据,它可以提供O(n!)。测试旅行推销员的问题。好的。我并没有在你的回答中真正收集到这一点。然而,我认为突出第1行和第7行中的优化是有意义的。但这也有O(n!)
性能,因此与OPs解决方案相比没有任何进步。这可能非常相似。是的,就时间复杂度而言,在现实世界中,它通常会提供很好的性能,但正如我提到的,对于坏数据,它可以提供O(n!)。测试旅行推销员的问题。好的。我并没有在你的回答中真正收集到这一点。然而,我认为突出第1行和第7行中的优化是有意义的。没有答案,只是给你一些建议让你思考。。(a) 首先对数组进行排序,然后将整数与最大值/最小值之和进行比较(b)有点明显,但忽略所有大于整数的数组元素(c)排序后获得中值、最大值/最小值之和,然后与整数进行比较,找出更多可以忽略的值。。也许我想得太多了…没有答案,只是给你一些建议让你思考。。(a) 首先对数组进行排序,然后将整数与最大值/最小值之和进行比较(b)有点明显,但忽略所有大于整数的数组元素(c)排序后获得中值、最大值/最小值之和,然后与整数进行比较,找出更多可以忽略的值。。也许我想得太多了。。。