как найти все возможные буквенные комбинации для заданных чисел в переполнении стека

Мне нужен эффективный код в PHP, который генерирует все возможные комбинации букв для заданных чисел. Назначьте буквы для чисел как 2-> ABC 3-> DEF 4-> GHI 5-> JKL 6-> MNO 7-> PQRS 8-> TUV 9-> WXYZ Я попробовал приведенный ниже код, но он не дает ожидаемый результат.

function f_($n)
{
if($n<2) { return 1; }
for($x = 2;$n-1>1;$x*=$n--);
return $x;
}
function array_restore($r){
$clean = array();
if(is_array($r)){
foreach($r as $k){
$clean[] = $k;
}
}
return $clean;
}

function cmb($val, $l, $u=false){
$len = $l;
$str = strlen($val);
$tot = f_($str) / f_($str-$len);

$combo = array();
if($l <= $str){
for($i=0;$i<$tot*8;$i++){
if(substr(str_shuffle($val), 0, $len) !== @$combo[$i]){
$combo[$i] = substr(str_shuffle($val), 0, $len);
}
}
}else{
return "length must be less than the length of your string.";
}
if($u == true){
$x = array_unique($combo);
return array_restore($x);
}else{
return $combo;
}
}

$res   = cmb($value, 3, true);
echo "<pre><br/>";
print_r($res);Requirements:

Если я даю ввод как 628, он должен генерировать все возможные комбинации символов из ‘MNOABCTUV’
Выход должен генерировать
— 2-буквенная комбинация
— 3-буквенная комбинация
— комбинация из 4 букв
— комбинация из 5 букв
— комбинация из 6 букв

Пример: мне нужны все комбинации из 3 букв
[0] => UBM
[1] => OTV
[2] => НАУ
[3] => OMA
[4] => BUA
[5] => VCM
[6] => AVT
[7] => АОМ
[8] => НТВ
[9] => VMB
[10] => VOA
[11] => ОАЕ
[12] => VBU
[13] => MNV
[14] => AMO
[15] => OVC
[16] => САО
[17] => UTN
[18] => TVN
[19] => ТВЦ
[20] => БНО
[21] => VAN
[22] => CBV
[23] => VTN. .. .. Скоро….

Временная сложность должна быть меньше, а эффективность кода.

-4

Решение

$arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$newOne = array();
$c = count($arr); //count for your lang letters..
for($i = 0;$i<$c;$i++){
for($j = 0;$j<$c;$j++){
for($k = 0;$k<$c;$k++){
$val = $arr[$i].$arr[$j].$arr[$k];
array_push($newOne,$val);
}
}
}

это должно работать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]