我正在做一个解谜者。到目前为止,我正在做这个词的所有排列,但是有很多!对于一个 12 字母的单词,有 479001600 次烫发......这个游戏是一个 16 字母的拼图(4x4)
[A][B][C][D]
[E][F][G][H]
[I][J][K][L]
[M][N][X][O]
只能用所选字母周围的字母组成一个单词。我的意思是,例如我不能选择 AIM 这个词,因为我不在 A 周围……但我可以创建“AFI”这个词。您选择 A,然后选择 F(是 A 的诊断),然后选择 I
我的置换代码是
function permute( $tmp, $word, $level )
{
if ( strlen( $word ) > 2)
{
$this->display( $word );
//return ;
}
for ( $i = 0 ; $i < $this->original_word_length ; $i++ )
{
if ( $this->bOne_bond == true and $this->bonds[$level] != -1 and $i != $this->bonds[$level] and $level < $this->max_bonds ) continue ;
if ( strcmp( $tmp{$i}, "N" ) == 0 )
{
$word_tmp = $word ;
$word_tmp .= $this->original_word{$i};
$flags_tmp = $tmp ;
$flags_tmp{$i} = "Y";
$this->permute( $flags_tmp, $word_tmp, $level+1 );
}
}
}
如何根据相邻字母进行计算?
编辑:解决方案在这里。谢谢