[PHP-users 11758] Re: 組合せの生成について質問

Toshiyuki Kajii php-users@php.gr.jp
2002年11月25日 16:59:21 +0900


梶井です。
* 2002年11月23日 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
*---------------------------------------------------*

AltStyle によって変換されたページ (->オリジナル) /