2012-09-25 10 views
5

可能性の重複:
Permutations - all possible sets of numbersphpを使用して確率木を作成しますか?

私はオプションのリストを持っている配列を持って、 各オプションは一意であり、繰り返すことはできません。

私は、これらのオプションを使用して確率ツリーを構築したい:

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

そうつの有効なラインは1-2-E-3-O-I-4-A

私はこれをどのように行うことができますだろうか? (または少なくとも正しい方向に私を向ける!)

+0

実際には、 '$ options'配列のすべての順列を探したいでしょうか? – fsenart

+3

この[質問](http://stackoverflow.com/questions/5506888/permutations-all-possible-sets-of-numbers)をご確認ください。それは役に立つかもしれません。 –

答えて

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

すべての可能な行を表示したい – Hailwood

+0

@Hailwoodこれは何か? – Peon

+0

いいえ、彼はすべての可能なラインだけではなく、1つのランダムな... –

0

再帰は、おそらくこれを実装する最も簡単な方法ですが、大規模なデータセットにはうまく適応できません。

基本的に、オプションの配列をとる関数を書くと、呼び出し自体を切り捨てます。

関連する問題