题目描述:
由 A,B,C 这3个字母就可以组成许多串。 比如:“A”,“AB”,“ABC”,“ABA”,“AACBB” … 现在,小明正在思考一个问题: 如果有a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串呢?
输入格式:
一行,四个整数,分别对应a,b,c,n。
输出格式:
一个整数,代表答案。保证结果在int范围内。
输入样例:
3 1 1 2
输出样例:
7
数据范围与提示:
有3个A,1个B,1个C,则可以组成 "AA","AB","AC","BA","BC","CA","CB" 这7个长度为2的字符串。
代码如下1:
a,b,c,n=map(int,input().split())
ls=["A"]*a+["B"]*b+["C"]*c
di,o,z=set(),"",""
def hanshumain(ls,n,m,z):
if n==1:
if "A" in ls:
m+="A"
if m not in di:
di.add(m)
m=m[:-1]
if "B" in ls:
m+="B"
if m not in di:
di.add(m)
m=m[:-1]
if "C" in ls:
m+="C"
if m not in di:
di.add(m)
m=m[:-1]
else:
for o in range(len(ls)):
if z=="":
z=ls[0]
list0=ls[:]
m+=list0.pop(o)
k=""
hanshumain(list0,n-1,m,k)
m=m[:-1]
else:
if ls[o]!=z:
z=ls[o]
list0=ls[:]
m+=list0.pop(o)
k=""
hanshumain(list0,n-1,m,k)
m=m[:-1]
hanshumain(ls,n,o,z)
print(len(di))
注释:这段代码只能过80%
代码如下2:
这是大佬做的代码,看不懂而且快得离大谱



