如何使用强力方法列出元素的所有可能组合?

时间:2011-02-03 14:33:24

标签: php algorithm brute-force

如何列出以下所有可能的组合:

字符串(4个字符,只有小写字母没有数字或特殊符号),#符号,字符串(5个字符,与第1个相同的rue)。

e.g:

dhgi#msodd

2 个答案:

答案 0 :(得分:6)

假设:英文字母

for($firstPart = 'aaaa'; $firstPart != 'aaaaa'; $firstPart++) {
   for($secondPart = 'aaaaa'; $secondPart != 'aaaaaa'; $secondPart++) {
      echo $firstPart,'#',$secondPart,'<br />';
   }
}

虽然你为什么要这样做,但我不知道。

这与您的previous question相关吗?

答案 1 :(得分:0)

由递归驱动

  function bruteforce($data)
{
    $storage = array();
    tryCombination($data,'',$storage);
    return $storage;
}


function tryCombination($input,$output,&$storage)
{
    if($input == "")
    {

        if(!in_array($output,$storage))
        array_push($storage,$output);

    }else {
        for($i = 0 ; $i < strlen($input) ; $i++)
        {
            $next = $output  . $input[$i];
            $remaining = substr($input,0,$i)  . substr($input,$i + 1);
            tryCombination($remaining,$next,$storage);
        }
    }


}

$final = bruteforce('yourData');
echo count($final);
print_r($final);