AcWing 703. 数独检查(Python)
原题链接
简单
作者:
习学学
,
2021-02-02 10:06:47
,
所有人可见
,
阅读 377
Python 代码
T = int(input())
grids = [[0] * 40 for _ in range(40)]
def check(n):
check_row = [[0] * (n**2+1) for _ in range(n**2+1)]
check_col = [[0] * (n**2+1) for _ in range(n**2+1)]
check_block = [[[0] * (n**2+1) for _ in range(n)] for _ in range(n)]
for i in range(n**2):
for j in range(n**2):
if grids[i][j] > n**2 or grids[i][j] < 1: return False
if check_row[i][grids[i][j]] != 0: return False
if check_col[j][grids[i][j]] != 0: return False
if check_block[i//n][j//n][grids[i][j]] != 0: return False
check_row[i][grids[i][j]] += 1
check_col[j][grids[i][j]] += 1
check_block[i//n][j//n][grids[i][j]] += 1
return True
case = 1
while T:
T -= 1
n = int(input())
for i in range(n**2):
nums = list(map(int, input().split()))
for j in range(n**2):
grids[i][j] = nums[j]
print('Case #' + str(case) + ': ', end='')
if check(n): print('Yes')
else: print('No')
case += 1