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

时间:2015-09-17 11:45:01

标签: php time-complexity

我在数学和复杂度计算方面非常糟糕,所以我想请你帮忙。

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

我能够取得的最好成绩是O(n!) - 相当新手的表现......

你能帮我写一个更有效的方式吗? 或者至少给我一个提示。

2 个答案:

答案 0 :(得分:0)

我认为你可以这样做

  1. if(sum(intgers))<另一个整数返回false
  2. 取第一个整数
  3. current = first
  4. foreach(左整数)
  5. result = current + number
  6. 如果result =另一个整数返回true
  7. 如果结果>另一个整数结束此树
  8. else current = result
  9. 使用新数据
  10. 到第3步。等等递归。
  11. 事实上,它可以为你提供强力,它依赖于数据。 示例(1,2,3,4,5,6,7,8,9,10)和要检查的整数是1000。 但是你可以在第一步检查它。 (添加为步骤0)

    但是检查结果已经不可用将在搜索开始时丢弃很多变种。

    我确信这不是最好的,但并不是很难实现,它通常有助于计算。 希望这是可以理解的。

答案 1 :(得分:-1)

我会在数组中生成所有元素的数组。例如:

$array_sum[0] = $int1 + $int2;
$array_sum[1] = $int1 + $int3;
$array_sum[2] = $int1 + $int4;
...
$array_sum[n] = $int1 + $intn;
$array_sum[n+1] = $int2 + $int1;
$array_sum[n+2] = $int2 + $int3;
$array_sum[n+3] = $int2 + $int4;
...

然后,当你有那个数组时(当然,你必须做一个for循环来获取它),那么你可以搜索整数是否在array_sum中。