rekursives finden sämtlicher Kombinationen einer n x m Matrix
am 01.11.2006 11:44:48 von Lemming
Hallo,
ich möchte gern sämtliche Kombinationen von einer beliebigen Anzahl
Arrays mit beliebiger Länge ermitteln.
beispielsweise habe ich 3 Arrays mit verschiedenen Inhalten, die
kombiniert werden müssen:
array1 ( 1, 2, 3) array2 (4) array ( 5,6,7)
jetzt benötige ich alle Kombination , wodurch hier 3x1x3 Kombinationen
entstehen:
1 4 5
1 4 6
1 4 7
2 4 5
2 4 6
2 4 7
3 4 5
3 4 6
3 4 7
da die Dimensionsgrenzen nun beliebig sein können, ist das ganze nur
rekursiv lösbar - allerdings bekomme ich es einfach nicht hin.
Vielen Dank im voraus
Lemming
Re: rekursives finden sämtlicher Kombinationen einer n x m Matrix
am 01.11.2006 12:34:20 von Holger Pollmann
"Lemming" schrieb:
> beispielsweise habe ich 3 Arrays mit verschiedenen Inhalten, die
> kombiniert werden müssen:
> array1 ( 1, 2, 3) array2 (4) array ( 5,6,7)
> jetzt benötige ich alle Kombination [...]
>
> da die Dimensionsgrenzen nun beliebig sein können, ist das ganze nur
> rekursiv lösbar - allerdings bekomme ich es einfach nicht hin.
Meine Quick'n'dirty-Lösung:
function makeCombination($dim_array, $cur_string)
{
$new_array = $dim_array;
$cur_array = array_shift($new_array);
$ret = Array();
$num = count($new_array);
foreach($cur_array as $val){
$s = $cur_string.$val;
if($num)
$ret = array_merge($ret, makeCombination($new_array, $s));
else
$ret[] = $s;
}
return $ret;
}
$arrays = Array(
Array(1, 2, 3),
Array(4, 8, 9),
Array(5, 6, 7)
);
echo "\n";
$res = makeCombination($arrays, '');
var_dump($res);
echo "
\n";
--
( ROT-13 if you want to email me directly: uvuc@ervzjrexre.qr )
"Sie tragen Trauer? Der Untergang der DDR?" - "Nein, Leni Riefenstahl.
Der Führer hat sie zu sich genommen." -- Abschiedsshow Scheibenwischer,
02.10.2003