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