у меня есть массив в php
$a = array(1,2,3,4,5);
и когда я отображаю $ a со значением массива условия = 6, он покажет
1 + 5 и 2 + 4
Немного плохое описание, но я думаю, что понимаю.
Это перебирает $ a и находит то, что создает сумму.
Он разрезает массив, чтобы убедиться, что он не получает одинаковые совпадения в конце. (1 + 5 & 5 + 1).
$a = array(3,5,1,4,2,8,6,7,9,10);
Echo findsum(6, $a);Function findsum($sum, $a){
Asort($a);
$a = Array_values($a);
Foreach($a as $key => $val){
If($val>=$sum) break;
$find = $sum - $val;
$subarr = array_slice($a, $key+1);
If (in_array($find, $subarr)) echo $val . "+" . $find . "\n";
}
}
Выход:
1+5
2+4
Отредактированный код, чтобы быть более эффективным с большими массивами.
Теперь он сортирует массив и, когда значение, на которое он смотрит, больше или равен сумме, которую он находит, он остановится.
Теоретически. Это должно быть в состоянии остановить If($val>=$sum/2) break;
но я не уверен
Других решений пока нет …