题解 | #Sudoku#

Sudoku

https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1

import sys

matrix = [[0]*9 for _ in range(9)]
for i in range(9):
    matrix[i] = sys.stdin.readline().strip().split()

def backtracking(matrix):
    for i in range(9):
        for j in range(9):
            if matrix[i][j] == '0':
                for value in range(1,10):
                    if isValid(matrix, i, j, str(value)):
                        matrix[i][j] = str(value)
                        if backtracking(matrix): 
                            return True
                    matrix[i][j] = '0'
                return False   # 如果九个数都试过,没有找到,就返回False
    return True     # 遍历完没有返回False,说明找到了合适的棋盘


def isValid(m, x, y, value):
    for j in range(9):   # 检查同一行有没有value
        if m[x][j] == value:
            return False
    for i in range(9):
        if m[i][y] == value:   # 检查同一列
            return False
    
	xboard = x//3
    yboard = y//3
	for i in range(xboard*3, (xboard+1)*3):   # 检查同一九宫格
        for j in range(yboard*3, (yboard+1)*3):
            if i != x and j !=y and m[i][j] == value:
                return False
    return True


backtracking(matrix)
for i in range(9):
    matrix[i] = list(map(str, matrix[i]))
    print(' '.join(matrix[i]))



全部评论

相关推荐

10-29 19:45
吉林大学 Java
从零开始数:自我评价没有必要写,但是看起来你应该是学了csdiy的一些课程,可以在专业技能里面写上自己比较熟悉操作系统和计网,但如果你是找Java的话,把第一个项目换了吧,现在看起来有点四不像。 无论是黑马点评或者说做个轮子项目,刷题和八股也搞起来吧,而且也没必要等到寒假,最近就可以开始找,找到就偷偷实习呗,别被逮到就行了。
点赞 评论 收藏
分享
挥毫自在:想白嫖你呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务