题目:n个长度为m的字符串,每个字符串由m个大写字母组成。任选第i和第j个字符串,并交换长度为k的前缀,可以在交换后的基础上进行任意次这样的操作。
请问一共可以生成多少个不同的字符串,包括原串本身。
样例输入:
2 3
ABC
DEF
输出:8
暴力求解
line1=list(map(int,input().split()))
n,m=line1[0],line1[1]
li=[]
set_s=set()
for _ in range(n):
s=str(input())
if s not in set_s:
set_s.add(s)
print(set_s)
def f(x):
set_s1=x
for i in range(len(set_s1)):
for j in range(i+1,len(set_s1)):
for k in range(m):
li=list(set_s1)
if li[i][:k]!=li[j][:k]:
s1=li[i][:k]+li[j][k:]
s2=li[j][:k]+li[i][k:]
set_s1.add(s1)
set_s1.add(s2)
return set_s1
while True:
tmp=list(set_s)
set_s=f(set_s)
#print(tmp)
#print(set_s)
if len(set_s)-len(tmp)==0:
print(len(set_s))
print(set_s)
break