[PHP-users 11758] Re: 組合せの生成について質問
Toshiyuki Kajii
php-users@php.gr.jp
Mon, 25 Nov 2002 16:59:21 +0900
梶井です。
* Sat, 23 Nov 2002 14:37:45 +0900
* masahiro iwai <m-iwai@info.human.nagoya-u.ac.jp> wrote:
>(w3,w12,w1),(w1,w7,w13)
>(w3,w12,w1),(w1,w7,w13),(w5,w10),(w13)
>(w3,w12,w1),(w1,w7,w13),(w10,w11),(w11),(w6)
>(w3,w12,w1),(w1,w7,w13),(w10,w11),(w11),(w6),(w11,w5)
>(w3,w12,w1),(w1,w7,w13),(w10,w11),(w11),(w6),(w10)
>上記のようなデータから組合せを生成したいと考えています.
>PHPというより,アルゴリズムの問題かと思いますが,私はPHP
>以外の言語に疎く,こちらに投稿させていただきました.
まさにアルゴリズムの問題な気もしますが...
$a = array(array(w3,w12,w1),array(w1,w7,w13));
print_r(combination($a));
function combination($array){
if(count($array) == 0){
return array();
}
$array_1st = array_shift($array);
$array_sub = combination($array);
$array_tmp = array();
foreach($array_1st as $value){
if(count($sub_array) == 0){
$array_sub = array(array());
}
foreach($array_sub as $arr){
array_unshift($arr, $value);
array_push($array_tmp, $arr);
}
}
return $array_tmp;
}
こんな感じでしょうか。
*---------------------------------------------------*
Toshiyuki Kajii 梶井 俊幸
e-mail: mikoto@camino.nissan.ne.jp
*---------------------------------------------------*