5

重複の可能性:
順列-考えられるすべての数値のセット

オプションのリストを含む配列があります。各オプションは一意であり、繰り返すことはできません。

次のオプションを使用して確率ツリーを作成したいと思います。

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

したがって、1つの有効な行は次のようになります。1-2-E-3-O-I-4-A

これどうやってするの?(または少なくとも私を正しい方向に向けてください!)

4

2 に答える 2

0

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

基本的に、オプションの配列を取り、呼び出し自体から1つを切り取る関数を記述します。

于 2012-09-25T12:12:09.750 に答える
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 );

?>
于 2012-09-25T12:14:21.073 に答える