2015-09-06 229 views
-1

我有3个字符 - 'a','b','c'。我需要创建长度为N的字符串,其中N> = 3. 每个字符必须至少存在一次字符串中。允许重复字符。所以有多少这样的字符串是可能的。可能的长度为N的字符串,长度为3个字符

+2

你们是不是要产生一个* *这样的字符串?你是否想要生成*全部*的字符串?你只是想*数*有多少可能的字符串?你试过什么了? – beaker

+0

我想知道有多少可能的字符串? – coderx

+0

无限。根据您的要求... –

回答

2

第一: 为N=3,你必须形成与字符​​(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 
+0

这里假设'abca'与'abca'不同,不是吗? (第二个字符串具有交换的第一个和最后一个元素。) – beaker

+0

对于N = 4,答案应该是36.所以我认为解决方案考虑重复。 – coderx

+0

你是对的!我不考虑可能的重复。抱歉! :( –

相关问题