题解 | #Sudoku#学习大佬后自己敲一遍

Sudoku

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

def isRightNum(all_list, x, y):
    for i in range(9):
        if all_list[x][i] == all_list[x][y] and i != y:
            return False
        if all_list[i][y] == all_list[x][y] and i != x:
            return False
    m, n = 3 * (x // 3), 3 * (y // 3)
    for i in range(3):
        for j in range(3):
            if all_list[m+i][n+j] == all_list[x][y] and ((m+i) != x or (n+j) != y):
                return False
    return True

def changeNum(all_list):
    for i in range(9):
        for j in range(9):
            if all_list[i][j] == 0:
                for n in '123456789':
                    all_list[i][j] = int(n)
                    if isRightNum(all_list, i, j) and changeNum(all_list):
                        return True
                    all_list[i][j] = 0
                else:
                    return False
    return True


while True:
    try:
        all_list = []
        for i in range(9):
            all_list.append([int(x) for x in input().split()])
            
        changeNum(all_list)
        for j in range(9):
            print(' '.join([str(x) for x in all_list[j]]))

    except:
        break
全部评论

相关推荐

美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务