白駿2160画像比較
6218 ワード
質問する
N(2≦N≦50)個の図があります.各図5×7の大きさで、2色あります.このときの2色はそれぞれ「X」と「X」です.伝えようこれらの図が与えられている場合は、2つの最も似たような図を見つけるためにプログラムを作成します.2つの図の中で異なる格の個数が最も少ない場合、2つの図が最も似ていると言います.
例えば、上記の2つの画像が与えられると、塗りの部分が異なる.上の図には5つの格が違います.これにより、異なるセルの個数が最小になる場合があります.
入力
1行目はNです.次です.×各行に7文字、各行に1枚の絵があります.
しゅつりょく
1行目に最も似た図の番号を2枚出力します.図中の番号は入力順で1、2、…、Nとなります.番号を出力するときは、小さいのを先に出力します.入力は常に1つの答えしかありません.
入力例1
3..X....
.XXX...
.XX....
.....X.
.X...X.
...X...
..XX...
.XX....
.XX..X.
.X...X.
XX.....
X......
XX...XX
XXXX.XX
XXX..XX
サンプル出力1
1 2
解法
3 Dリストを使用します.
2 Dリストの画像をリストにします.
1枚目の図から、1枚ずつ繰り返します.
二重複文で、最初の図から繰り返します.
1番目の図と2番目の図が同じ場合(図のインデックスが同じ場合)は無視され、異なる場合は図の要素を1つずつ比較します.
比較した2枚の図の番号と他の部分の個数をリストに並べ、個別に保存します.
すべてを比較した後、このリストで他の部分の個数に基づいて最小値を検索します.
すでに比較を描いた場合、先に比較を描いて、繰り返しないので、絵の順序は昇順です.
コード#コード#
N = int(input())
pictures = []
for _ in range(N):
picture = [list(map(str, input())) for _ in range(5)]
pictures.append(picture)
differences = []
for i, picture_main in enumerate(pictures):
for j, picture_comp in enumerate(pictures):
if i != j:
diff = 0
for r in range(5):
for c in range(7):
if picture_main[r][c] != picture_comp[r][c]:
diff += 1
differences.append([i + 1, j + 1, diff])
min_difference = min(differences, key=lambda x: x[2])
print(min_difference[0], min_difference[1])
白駿2160画像比較
Reference
この問題について(白駿2160画像比較), 我々は、より多くの情報をここで見つけました
https://velog.io/@mynote/백준-2160-그림-비교
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
..X....
.XXX...
.XX....
.....X.
.X...X.
...X...
..XX...
.XX....
.XX..X.
.X...X.
XX.....
X......
XX...XX
XXXX.XX
XXX..XX
3 Dリストを使用します.
2 Dリストの画像をリストにします.
1枚目の図から、1枚ずつ繰り返します.
二重複文で、最初の図から繰り返します.
1番目の図と2番目の図が同じ場合(図のインデックスが同じ場合)は無視され、異なる場合は図の要素を1つずつ比較します.
比較した2枚の図の番号と他の部分の個数をリストに並べ、個別に保存します.
すべてを比較した後、このリストで他の部分の個数に基づいて最小値を検索します.
すでに比較を描いた場合、先に比較を描いて、繰り返しないので、絵の順序は昇順です.
コード#コード#
N = int(input())
pictures = []
for _ in range(N):
picture = [list(map(str, input())) for _ in range(5)]
pictures.append(picture)
differences = []
for i, picture_main in enumerate(pictures):
for j, picture_comp in enumerate(pictures):
if i != j:
diff = 0
for r in range(5):
for c in range(7):
if picture_main[r][c] != picture_comp[r][c]:
diff += 1
differences.append([i + 1, j + 1, diff])
min_difference = min(differences, key=lambda x: x[2])
print(min_difference[0], min_difference[1])
白駿2160画像比較Reference
この問題について(白駿2160画像比較), 我々は、より多くの情報をここで見つけました https://velog.io/@mynote/백준-2160-그림-비교テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol