5

可能重复:
生成任意长度的任意字母的所有组合

我正在尝试在 php 中编写所有可能的 10 个字母(zzzzzzzzzz)的单词。我怎样才能做到这一点?它看起来像这样:http: //i.imgur.com/sgUnL.png

我尝试了一些方法,但他们只随机制作 10 个字母,而不是从 1 个字母增加。顺便说一句,执行时间和它的大小都不是问题。我只需要对其进行算法,如果有人用代码显示它当然会更有帮助..

4

3 回答 3

7
function words($length, $prefix='') {
    if ($length == 0) return;
    foreach(range('a', 'z') as $letter) {
        echo $prefix . $letter, "\n";
        words($length-1, $prefix . $letter);
    }
}

用法:

words(10);

在这里试试:http: //codepad.org/zdTGLtjY(单词最多 3 个字母)

于 2011-09-01T12:46:42.440 回答
6

版本 1:

for($s = 'a'; $s <= 'zzzzzzzzzz'; print $s++.PHP_EOL);

正如保罗在下面的评论中指出的那样,这只会转到zzzzzzzzyz. 慢一点(如果有人关心的话),但正确的版本是:

//modified to include arnaud576875's method of checking exit condition
for($s = 'a'; !isset($s[10]); print $s++.PHP_EOL);
于 2011-09-01T13:02:22.977 回答
0
 <?php

function makeWord($length, $prefix='')
{
   if ($length <= 0)
   {
      echo $prefix . "\n";
      return;
   }

   foreach(range('a', 'z') as $letter)
   {
      makeWord($length - 1, $prefix . $letter);
   }
}    

// Use the function to write the words.
$minSize = 1;
$maxSize = 3;

for ($i = $minSize; $i <= $maxSize; $i++)
{
   makeWord($i);
}

?>
于 2011-09-01T13:37:41.017 回答