生成所有字母组合

本文关键字:组合 | 更新日期: 2023-09-27 18:27:14

我正在尝试构建一个可以对输入字母进行加扰的应用程序。我发现了可以重新排列的代码示例:

abc转换为cba, acb

不过,我想做的是以上内容,但也能够仅使用输入的字母输出较短的组合。

因此,我想要的应用程序能够将abc分类为abcacb等。

我意识到这可能需要某种算法,但我在网上找不到任何相关的东西。

谢谢!

生成所有字母组合

你需要在组合数学中使用"组合"的概念-它将排列与子集的选择相结合:

从n 返回k个元素的所有组合的算法

如果你知道如何获得所有可用字母的所有组合,那么只需将空格字符添加到可能的字符列表中,并获得所有组合,将空格左边的任何内容都修剪掉(忽略空格)。

例如,对于单词IF,您有"IF"answers"FI"。如果你尽可能地对待空间,你就有

' IF', ' FI', 'I F', 'F I', 'IF ', 'FI '

它修剪了所有剩下的东西,包括空间,变成了

'IF', 'FI', 'F', 'I', '', ''

忽略空格,这些都是你可能的组合,包括较短的单词。

您愿意在php中这样做吗?如果是,

 array_rand ($array, $num);

功能会很好用。它的第一个参数是有问题的数组:a.制作a-Z阵列第二个参数是要选择多少个"字母"或数组组件b.用途:

 rand($min, $max);

以生成1到26之间的随机数(字母表中的字符)。c.根据需要多次循环此函数。

这样做,直到字符串循环通过它的所有索引索引处的字符串等于所需数模基数加字符集代码所需数量等于所需数量除以基数持续