1018号:碁盤を塗り直す[python]
これは白準アルゴリズムの11050題です.
先にやろう
入力サイズに応じたチェス盤を2つ作成する.
入力した碁盤をチェス盤と比較し,一致する部位は0,一致しない部位は1とし,2つの比較板を形成した.
両比較板において、88の大きさ単位で、全ての場合の最大値を求める.
例えば、1010ボード
WBWBWBWBWB
BWBWBWBWBW
WBWBWBWBWB
BWBBBWBWBW
WBWBWBWBWB
BWBWBWBWBW
WBWBWBWBWB
BWBWBWBWBW
WBWBWBWBWB
BWBWBWBWBW
入力すると、
0000000000
0000000000
0000000000
0001000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
これを、球体で表される枠(チェス盤の大きさ)内の数を加えて設定します.非凸体の部分に移動し、最適フィット値を繰り返し求めて出力します.
対照軍チェス盤を作らずに比較チェス盤を直接作ると、より効率的になります.
まず制作の考えで提出しましたが通過しました
# 입력
y, x = map(int, input().split(" "))
board = []
for i in range(y):
board.append(input())
# 대조군 생성
contrast_W = []
contrast_B = []
for i in range(y):
tmpstring = ""
for j in range(x):
if i % 2 == 1:
if j % 2 == 1: # 홀수
tmpstring += "W"
if j % 2 == 0: # 짝수
tmpstring += "B"
else:
if j % 2 == 1: # 홀수
tmpstring += "B"
if j % 2 == 0: # 짝수
tmpstring += "W"
contrast_W.append(tmpstring)
for i in range(y):
tmpstring = ""
for j in range(x):
if i % 2 == 1:
if j % 2 == 1: # 홀수
tmpstring += "B"
if j % 2 == 0: # 짝수
tmpstring += "W"
else:
if j % 2 == 1: # 홀수
tmpstring += "W"
if j % 2 == 0: # 짝수
tmpstring += "B"
contrast_B.append(tmpstring)
# 입력된 체스판과 대조군과 비교하여 비교체스판 생성
compare_W = []
compare_B = []
for i in range(y):
tmplist = []
for j in range(x):
if board[i][j] == contrast_W[i][j]:
tmplist.append(0)
else:
tmplist.append(1)
compare_W.append(tmplist)
for i in range(y):
tmplist = []
for j in range(x):
if board[i][j] == contrast_B[i][j]:
tmplist.append(0)
else:
tmplist.append(1)
compare_B.append(tmplist)
# 최솟값구하기
result = 65
for i in range(x - 7):
for j in range(y - 7):
tmpresult = 0
for k in range(8):
tmpresult += sum(compare_W[j + k][i:i + 8])
if result > tmpresult:
result = tmpresult
for i in range(x - 7):
for j in range(y - 7):
tmpresult = 0
for k in range(8):
tmpresult += sum(compare_B[j + k][i:i + 8])
if result > tmpresult:
result = tmpresult
print(result)
入力値を受け入れます.入力サイズに応じたチェス盤を2つ作成する.
入力した碁盤をチェス盤と比較し,一致する部位は0,一致しない部位は1とし,2つの比較板を形成した.
両比較板において、88の大きさ単位で、全ての場合の最大値を求める.
例えば、1010ボード
WBWBWBWBWB
BWBWBWBWBW
WBWBWBWBWB
BWBBBWBWBW
WBWBWBWBWB
BWBWBWBWBW
WBWBWBWBWB
BWBWBWBWBW
WBWBWBWBWB
BWBWBWBWBW
入力すると、
0000000000
0000000000
0000000000
0001000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
これを、球体で表される枠(チェス盤の大きさ)内の数を加えて設定します.非凸体の部分に移動し、最適フィット値を繰り返し求めて出力します.
対照軍チェス盤を作らずに比較チェス盤を直接作ると、より効率的になります.
まず制作の考えで提出しましたが通過しました
Reference
この問題について(1018号:碁盤を塗り直す[python]), 我々は、より多くの情報をここで見つけました https://velog.io/@dongkan9/1018번-체스판-다시-칠하기-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol