2012-09-25 8 views
5

Eventuali duplicati:
Permutations - all possible sets of numbersCostruisci un albero delle probabilità usando php?

Ho una matrice che ha un elenco di opzioni, Ogni opzione è unico e non può essere ripetuto.

voglio costruire un albero di probabilità utilizzando queste opzioni:

$options = array('1','2','3','4','A','E','I','O'); 

Quindi una linea valida potrebbe essere 1-2-E-3-O-I-4-A

Come posso fare questo? (o almeno indirizzarmi nella giusta direzione!)

+0

In realtà si desidera trovare tutte le permutazioni dell'array '$ options'? – fsenart

+3

Si prega di controllare questa [domanda] (http://stackoverflow.com/questions/5506888/permutations-all-possible-sets-of-numbers). Potrebbe essere utile. –

risposta

0
<?php 

function pc_permute($items, $perms = array()) { 
    if (empty($items)) { 
     print join('-', $perms) . "<br />"; 
    } else { 
     for ($i = count($items) - 1; $i >= 0; --$i) { 
      $newitems = $items; 
      $newperms = $perms; 
      list($foo) = array_splice($newitems, $i, 1); 
      array_unshift($newperms, $foo); 
      pc_permute($newitems, $newperms); 
     } 
    } 
} 

$options = array('1','2','3','4','A','E','I','O'); 
$mass = pc_permute($options); 

?> 
+0

Voglio mostrare tutte le linee possibili – Hailwood

+0

@Hailwood qualcosa del genere? – Peon

+0

No, vuole TUTTE le linee possibili, non solo una casuale ... –

0

La ricorsione è probabilmente il modo più semplice per implementarlo, ma non si adatta bene ai dataset di grandi dimensioni.

Fondamentalmente scrivere una funzione che accetta una serie di opzioni, interrompe una chiamata da una stessa chiamata.