白駿1780号「紙の個数」
6536 ワード
質問する
白駿1780号紙の個数
に答える
四叉木を用いた分割征服問題.
2630日の問題に似ています.
4つの分面2630号とは異なり、9つの分面に分けるべきです.
上の2630題のように、毎分復帰がタイムアウトになるので修正しました.
Pythonコード
import sys
input = sys.stdin.readline
def cut(x,y,n):
global m_one,zero,one
check=paper[x][y]
for i in range(x,x+n):
for j in range(y,y+n):
if check!=paper[i][j]:
#9등분하기
for a in range(3):
for b in range(3):
cut(x+n//3*a,y+n//3*b,n//3)
return
if check==-1:
m_one+=1
elif check==0:
zero+=1
elif check==1:
one+=1
n = int(input())
paper = []
one = 0
zero = 0
m_one = 0
for _ in range(n):
paper.append(list(map(int, input().split())))
cut(0, 0, n)
print(m_one)
print(zero)
print(one)
Reference
この問題について(白駿1780号「紙の個数」), 我々は、より多くの情報をここで見つけました https://velog.io/@kgpaper/백준-1780번-종이의-개수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol