在超时边缘瑟瑟发抖
Python代码
col = [[True] * 10 for _ in range(9)]
row = [[True] * 10 for _ in range(9)]
block = [[[True] * 10 for _ in range(3)] for _ in range(3)]
grids = []
for i in range(9):
nums = list(input())
grids.append(nums)
for j in range(9):
if nums[j] != '.':
col[j][int(nums[j])] = False
row[i][int(nums[j])] = False
block[i//3][j//3][int(nums[j])] = False
def dfs(x, y):
if x == 9: return True
if y == 9: return dfs(x+1, 0)
if grids[x][y] != '.':
return dfs(x, y+1)
flag = False
for i in range(1, 10):
if row[x][i] and col[y][i] and block[x//3][y//3][i]:
grids[x][y] = i
row[x][i], col[y][i], block[x//3][y//3][i] = False, False, False
flag = dfs(x, y+1)
if flag: return flag
grids[x][y] = '.'
row[x][i], col[y][i], block[x//3][y//3][i] = True, True, True
return flag
dfs(0, 0)
for i in range(9):
print("".join(str(x) for x in grids[i]))
的确 有时真不懂怎么一下就好几秒了 Py怎么这么不懂事
原本我用grids[x][y] = str(i), 就过不了