长度为N且可能有3个字符的字符串

时间:2015-09-06 15:19:50

标签: string algorithm math combinations permutation

我有3个字符 - ' a',' b',' c'。我需要制作长度为N的字符串,其中N> = 3. 每个字符必须至少出现一次。允许重复字符。那么有多少这样的字符串是可能的。

1 个答案:

答案 0 :(得分:2)

第一: 对于N=3,您必须使用字符"abc"(1个初始字符串)形成字符串

对于N=4,您必须使用以下代码形成字符串:"abca""abcb""abcc"(3个初始字符串)

对于N=5,从N=4获取每个字符串,并附加"a""b""c"以形成三个字符串。 (总共9个)

因此,对于给定的N,您可以使用的可能“初始”字符串的数量为3^(N-3)

但: 对于每个长度为N的初始字符串,可能的不同字符串的数量为N!

例如,对于N = 3,初始字符串是“abc”,但是可以对此字符串进行置换以形成6个不同的字符串:

abc
acb
bac
bca
cab
cba

因此,字符N"a""b"至少出现一次的长度"c"的可能字符串总数为:(3^(N-3))*N!

For N=3, it's 6
    N=4,      72
    N=5,      1080
    N=6,      19440
    N=7,      408240
    N=8,      9797760
    N=9,      264539520
    N=10,     7936185600
    ...
    N=32,     1.8058768635096880150713941583736e+49