我在数学和复杂度计算方面非常糟糕,所以我想请你帮忙。
我需要编写一个函数,它接受一个整数数组和另一个整数,如果数组内的任何整数组合(sum)等于另一个整数,则返回true,否则返回false。
我能够取得的最好成绩是O(n!)
- 相当新手的表现......
你能帮我写一个更有效的方式吗? 或者至少给我一个提示。
答案 0 :(得分: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中。