题解 | #Sudoku#

Sudoku

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

hang, lie = 9, 9
a1= []
for i in range(hang):
    atemp = list(map(int, input().strip().split(" ")))
    a1.append(atemp)
def just1(hang,lie,arr,value):
    if value in set(arr[hang]):
        return False
    if value in set([arr[i][lie] for i in range(9)]):
        return False
    starthang = hang//3*3
    startlie = lie//3*3
    if value in set([arr[i][j] for i in range(starthang,starthang+3) for j in range(startlie,startlie+3)]):
        return False
    else:
        return True
def solve(arr):
    for (i,j) in [(i,j) for i in range(9) for j in range(9)]:
        if arr[i][j] == 0:
            for k in range(1,10):
                if just1(i,j,arr,k):
                    arr[i][j] = k
                    if not solve(arr):
                        arr[i][j] = 0
                    else:
                        break
            else:
                return False
    return True
solve(a1)
for i in range(9):
    for j in range(9):
        print(a1[i][j],end=" ")
    print()






全部评论

相关推荐

迷茫的大四🐶:价格这么低都能满了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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