Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复杂性/PHP-数组中的任何整数组合都等于另一个整数_Php_Time Complexity - Fatal编程技术网

复杂性/PHP-数组中的任何整数组合都等于另一个整数

复杂性/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

我的数学和复杂度计算很差,所以我想请你帮忙

我需要编写一个函数,它接受一个整数数组和另一个整数,如果数组中的任何整数组合(sum)等于另一个整数,则返回true,否则返回false

我所能达到的最好结果是
O(n!)
-相当新的性能

你能帮我用一种更有效的方式写这样一个函数吗?
或者至少给我一个提示。

我想你可以这样做

  • if(sum(intgers))<另一个整数返回false
  • 取第一个整数
  • 电流=第一
  • foreach(左整数中的数字)
  • 结果=当前+数字
  • 如果结果=另一个整数,则返回true
  • 如果结果>另一个整数结束此树
  • else当前=结果
  • 使用新数据执行步骤3。递归等等
  • 事实上,它可以给你蛮力,它对数据有依赖性。 例如(1,2,3,4,5,6,7,8,9,10),要检查的整数是1000。 但是你可以在第一步检查它。(作为步骤0添加)

    但是检查结果是否已经不可用将在搜索开始时删除许多变体

    我相信这不是最好的,但也不是很难实现,而且它通常对计算有很大帮助。
    希望这是可以理解的。

    我想你可以这样做

  • if(sum(intgers))<另一个整数返回false
  • 取第一个整数
  • 电流=第一
  • foreach(左整数中的数字)
  • 结果=当前+数字
  • 如果结果=另一个整数,则返回true
  • 如果结果>另一个整数结束此树
  • else当前=结果
  • 使用新数据执行步骤3。递归等等
  • 事实上,它可以给你蛮力,它对数据有依赖性。 例如(1,2,3,4,5,6,7,8,9,10),要检查的整数是1000。 但是你可以在第一步检查它。(作为步骤0添加)

    但是检查结果是否已经不可用将在搜索开始时删除许多变体

    我相信这不是最好的,但也不是很难实现,而且它通常对计算有很大帮助。
    希望这是可以理解的。

    但这也有
    O(n!)
    性能,所以与OPs解决方案相比没有进步。这可能非常相似。是的,就时间复杂度而言,在现实世界中,它通常会提供很好的性能,但正如我提到的,对于坏数据,它可以提供O(n!)。测试旅行推销员的问题。好的。我并没有在你的回答中真正收集到这一点。然而,我认为突出第1行和第7行中的优化是有意义的。但这也有
    O(n!)
    性能,因此与OPs解决方案相比没有任何进步。这可能非常相似。是的,就时间复杂度而言,在现实世界中,它通常会提供很好的性能,但正如我提到的,对于坏数据,它可以提供O(n!)。测试旅行推销员的问题。好的。我并没有在你的回答中真正收集到这一点。然而,我认为突出第1行和第7行中的优化是有意义的。没有答案,只是给你一些建议让你思考。。(a) 首先对数组进行排序,然后将整数与最大值/最小值之和进行比较(b)有点明显,但忽略所有大于整数的数组元素(c)排序后获得中值、最大值/最小值之和,然后与整数进行比较,找出更多可以忽略的值。。也许我想得太多了…没有答案,只是给你一些建议让你思考。。(a) 首先对数组进行排序,然后将整数与最大值/最小值之和进行比较(b)有点明显,但忽略所有大于整数的数组元素(c)排序后获得中值、最大值/最小值之和,然后与整数进行比较,找出更多可以忽略的值。。也许我想得太多了。。。