書かれたプログラミング-20200314-01

タイトル: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

 

 

彼は183元記事に公開 ウォン称賛91 ビュー9988を

おすすめ

転載: blog.csdn.net/weixin_45405128/article/details/104870371