WBS
Новичок
Есть несколько массивов с числами. Требуется составить все возможные сочетания элементов из этих массивов без повторений. Интересует наиболее быстрый алгоритм.
Пример массива:
$arr[0] = array(1,2,3);
$arr[1] = array(2,4,5,7);
$arr[2] = array(3);
$arr[3] = array(1,5);
Результат:
1 2 3 5
1 4 3 5
1 7 3 5
2 4 3 1
2 4 3 5
2 5 3 1
2 7 3 1
2 7 3 5
Самое очевидное решение:
Оно не устраивает по скорости. Кроме того, количество массивов (в примере их 4) величина переменная.
Пример массива:
$arr[0] = array(1,2,3);
$arr[1] = array(2,4,5,7);
$arr[2] = array(3);
$arr[3] = array(1,5);
Результат:
1 2 3 5
1 4 3 5
1 7 3 5
2 4 3 1
2 4 3 5
2 5 3 1
2 7 3 1
2 7 3 5
Самое очевидное решение:
PHP:
foreach ($arr[0] as $val1)
foreach ($arr[1] as $val2)
foreach ($arr[2] as $val3)
foreach ($arr[3] as $val4)
if (sizeof(array_unique(array($val1,$val2,$val3,$val4))) == 4)
... // обрабатываем сочетание
Оно не устраивает по скорости. Кроме того, количество массивов (в примере их 4) величина переменная.