Closed4

順列全探索

KanonKanon
import itertools

# 文字列 A, B の文字が異なる箇所の個数を求める関数
def diff(A, B):
    res = 0
    for a, b in zip(A, B):
        if a != b:
            res += 1
    return res

N, M = map(int, input().split())
S = [input() for _ in range(N)]
S.sort()

for T in itertools.permutations(S):
    ok = True
    for i in range(N - 1):
        if diff(T[i], T[i+1]) != 1:
            ok = False
    if ok:
        print("Yes")
        exit()
print("No")
KanonKanon

itertools.permutationsをイメージ

import itertools
N, M = map(int, input().split())
S = [input() for _ in range(N)]
S.sort()
for T in itertools.permutations(S):
  print(T)

入力

4 4
bbed
abcd
abed
fbed

出力

('abcd', 'abed', 'bbed', 'fbed')
('abcd', 'abed', 'fbed', 'bbed')
('abcd', 'bbed', 'abed', 'fbed')
('abcd', 'bbed', 'fbed', 'abed')
('abcd', 'fbed', 'abed', 'bbed')
('abcd', 'fbed', 'bbed', 'abed')
('abed', 'abcd', 'bbed', 'fbed')
('abed', 'abcd', 'fbed', 'bbed')
('abed', 'bbed', 'abcd', 'fbed')
('abed', 'bbed', 'fbed', 'abcd')
('abed', 'fbed', 'abcd', 'bbed')
('abed', 'fbed', 'bbed', 'abcd')
('bbed', 'abcd', 'abed', 'fbed')
('bbed', 'abcd', 'fbed', 'abed')
('bbed', 'abed', 'abcd', 'fbed')
('bbed', 'abed', 'fbed', 'abcd')
('bbed', 'fbed', 'abcd', 'abed')
('bbed', 'fbed', 'abed', 'abcd')
('fbed', 'abcd', 'abed', 'bbed')
('fbed', 'abcd', 'bbed', 'abed')
('fbed', 'abed', 'abcd', 'bbed')
('fbed', 'abed', 'bbed', 'abcd')
('fbed', 'bbed', 'abcd', 'abed')
('fbed', 'bbed', 'abed', 'abcd')
このスクラップは14日前にクローズされました