ホーム > デジタル > PHPで組み合わせをすべて表示

PHPで組み合わせをすべて表示

2011 年 1 月 4 日 コメントをどうぞ コメント
このエントリーをはてなブックマークに追加
Bookmark this on Yahoo Bookmark

PHPで数学の「組み合わせ」をすべてリストアップするコードを書いてみました。

「組み合わせ」とは、n 個からm 個を選ぶ場合のすべてのパターンのことで、そのパターンの数は
=n!/(m!(m-n)!)
で表されます。
例えば、「1,2,3,4,5,6」という6個から4個を選ぶ場合には
1234、1235、1236、1245、1246、1256、1345、1346、1356、1456、2345、2346、2356、2456、3456
という15通りのパターンができます。

サンプル

下の関数「kumiawase」に、選ぶ元となる全体を配列で与え、また抜き取る数を与えると、すべてのパターンを配列で返します。

function kumiawase($zentai,$nukitorisu){
    $zentaisu=count($zentai);
    if($zentaisu<$nukitorisu){
        return;
    }elseif($nukitorisu==1){
        for($i=0;$i<$zentaisu;$i++){
            $arrs[$i]=array($zentai[$i]);
        }
    }elseif($nukitorisu>1){
        $j=0;
        for($i=0;$i<$zentaisu-$nukitorisu+1;$i++){
            $ts=kumiawase(array_slice($zentai,$i+1),$nukitorisu-1);
            foreach($ts as $t){
                array_unshift($t,$zentai[$i]);
                $arrs[$j]=$t;
                $j++;
            }
        }
    }
    return $arrs;
}

使用例

「1,2,3,4,5,6」という6個から4個を選ぶ場合の使用例を示します。

$temps=kumiawase(array(1,2,3,4,5,6),4);
print "<ul>";
foreach($temps as $temp){
    print "<li>".implode($temp)."</li>";
}
print "</ul>";
カテゴリー: デジタル タグ: , ,
  1. コメントはまだありません。
  1. トラックバックはまだありません。