私は一日中PHP配列の順列/組み合わせの質問を見てきました..それでも理解できません:/
次のような配列がある場合:
20 //key being 0
20 //key being 1
22 //key being 2
24 //key being 3
次のような組み合わせが必要です。
20, 20, 22 //keys being 0 1 2
20, 20, 24 //keys being 0 1 3
20, 22, 24 //keys being 0 2 3
20, 22, 24 //keys being 1 2 3
私が現在持っているコードは私に与えます:
20, 22, 24
20 を繰り返したくないので... しかし、それが必要です!
これが私が持っているコードです。文字列のすべての可能性を取得するのは Php 再帰から直接です
function getCombinations($base,$n){
$baselen = count($base);
if($baselen == 0){
return;
}
if($n == 1){
$return = array();
foreach($base as $b){
$return[] = array($b);
}
return $return;
}else{
//get one level lower combinations
$oneLevelLower = getCombinations($base,$n-1);
//for every one level lower combinations add one element to them that the last element of a combination is preceeded by the element which follows it in base array if there is none, does not add
$newCombs = array();
foreach($oneLevelLower as $oll){
$lastEl = $oll[$n-2];
$found = false;
foreach($base as $key => $b){
if($b == $lastEl){
$found = true;
continue;
//last element found
}
if($found == true){
//add to combinations with last element
if($key < $baselen){
$tmp = $oll;
$newCombination = array_slice($tmp,0);
$newCombination[]=$b;
$newCombs[] = array_slice($newCombination,0);
}
}
}
}
}
return $newCombs;
}
私は($b == $lastEl)
運がなく、ラインで遊んでいます
===============
私がすでに見た質問は、メモリ不足エラーを作成したものと同じではありません!:
- 順次重複せずにPHPですべての順列を取得するにはどうすればよいですか?
- 順列 - 可能なすべての数値セット
- PHP での組み合わせ、配置、順列
- PHP 配列の組み合わせ
- PHP 配列のすべての順列を取得しますか?
- PHP: 1D 配列のすべての可能な組み合わせを取得する方法は?
- この配列から一意の配列値のみを選択します
- PHP 配列のすべての順列を取得しますか?
- PHP: 1D 配列のすべての可能な組み合わせを取得する方法は?
- この配列から一意の配列値のみを選択します
- 順次重複せずにPHPですべての順列を取得するにはどうすればよいですか?
- n から k 個の要素のすべての組み合わせを返すアルゴリズム
- 合計が指定された数に等しい配列内の要素の組み合わせの合計を検索します
- PHP での組み合わせ、配置、順列
- PHP 配列の組み合わせ
- 文字列のすべての可能性を取得するPHP再帰
- PHPで配列の順列を返す方法は?
- 順列 - 可能なすべての数値セット
- MySQL を使用した PHP のサブセットサムの問題
- 配列から値の一意の組み合わせを見つけ、重複するペアを除外します
- 重複を生成せずに文字列のすべての一意の順列を見つける
- すべての一意の順列を生成する
- 正確に k 個の整数のサブセット和?
これらのアルゴリズムのいくつかを 12 個の項目の配列で試しましたが、最終的にメモリ不足になりました。ただし、現在使用しているアルゴリズムでは、メモリ不足エラーは発生しません..しかし..それらの複製が必要です!