题解 | #Sudoku#

Sudoku

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

#递归真好用啊
import copy
def dif(l):
    ls=[]
    for i in range(1,10):
        if i not in l:
            ls.append(i)
    return ls
dpwc=[]
def fun1(dp1):
    global dpwc
    for i in range(9):
        for j in range(9):
            if dp1[i][j]==0:
                ls1=dif(dp1[i])
                ls2=dif([dp1[k][j] for k in range(9)])
                r,c=(i//3)*3,(j//3)*3
                tmp=[]
                for ii in range(r,r+3):
                    for jj in range(c,c+3):
                        tmp.append(dp1[ii][jj])
                ls3=dif(tmp)
                canl=[]
                for x in ls1:
                    if x in ls2 and x in ls3:
                        canl.append(x)
                for x in canl:
                    dp2=copy.deepcopy(dp1)
                    dp2[i][j]=x
                    fun1(dp2)
                return
    dpwc=dp1

dp=[list(map(int,input().split())) for _ in range(9)]
fun1(dp)
for i in range(9):
    print(" ".join(map(str,dpwc[i])))

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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