我正在 Visual Basic 中制作一个变位词求解器,当您输入一个字符串时,它会为您提供所有可能的组合。我需要计算出有多少种组合,具体取决于字符串中的字符数量以及有多少不同的字符。
E.G.
Sample string:
abc
Total characters: 3, Different Characters: 3
Possible combinations: 6
abc, acb, bac, bca, cab, cba
我需要一个等式(使用字符数和不同字符)将其链接到包含不同字符数的字符串。 我一直在使用反复试验来尝试找出答案,但我无法完全理解它。到目前为止,我有:
((letters - 1) ^ (different letters - 1)) + (letters - 1)
它适用于一些不同的字母计数,但现在适用于所有。
请帮忙???
最佳答案
我会引导您找到答案,但我会尝试在整个过程中进行解释。假设您有 10 个不同的字母。第一个有 10 个选择,第二个有 9 个,第三个有 8 个,等等。最终,将有 10*9*8*7*6...*2*1 = 10!可能性。但是,有时您会有同一封信的多个实例。例如,将它用于字符串“aaabcd”会高估可能性,因为它将每个 a 都视为不同的字母,即使它们不是。要纠正这一点,您必须除以重复字母数的阶乘。计算可能性总数的一个好方法是(字母阶乘的总数)/(每个字母的重复实例数的阶乘的乘积)。
例如:
“aaabcd”中的字母有 6!/(3!) 种排列方式
有6个!排列字母的方式是“abcdef”
"aaabbc"中的字母有 6!/(3!*2!) 种排列方式
“aaaaabbbcc”中的字母有 10!/(5!*3!*2!) 种排列方式
希望对您有所帮助。
关于vb.net - 将数字与方程式/算法联系起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24982753/