栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

解数独--python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解数独--python

解数独

题目描述
编写一个程序,通过填充空格来解决数独问题。

数独的解法需 遵循如下规则:

数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3
宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。

代码

def is_valid(row,col,val,board):
    for i in range(9):
        if board[i][col]==val or board[row][i]==val:
            return False
    row_=(row//3)*3
    col_=(col//3)*3
    for i in range(row_,row_+3):
        for j in range(col_,col_+3):
            if board[i][j]==val:
                return False
    return True
def backtrack(board):
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j]!='.':
                continue
            for k in range(1,10):
                if is_valid(i,j,str(k),board):
                    board[i][j]=str(k)
                    if backtrack(board):
                        return True
                    board[i][j]='.'
            return False
    return True
if __name__=='__main__':
    board = [["5","3",".",".","7",".",".",".","."],
             ["6",".",".","1","9","5",".",".","."],
             [".","9","8",".",".",".",".","6","."],
             ["8",".",".",".","6",".",".",".","3"],
             ["4",".",".","8",".","3",".",".","1"],
             ["7",".",".",".","2",".",".",".","6"],
             [".","6",".",".",".",".","2","8","."],
             [".",".",".","4","1","9",".",".","5"],
             [".",".",".",".","8",".",".","7","9"]]
    backtrack(board)
    print(board)

输出结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号