Closed4

順列全探索

301 Moved Permanently301 Moved Permanently
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")
301 Moved Permanently301 Moved Permanently

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')
このスクラップは2024/11/11にクローズされました