文章目录

  • 解数独
    • 1、程序简介
      • 示例:
      • 输入:
      • 输出:
      • 解释:
      • 提示:
    • 2、程序代码
    • 3、运行结果

解数独

1、程序简介

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

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

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

注:数独部分空格内已填入了数字,空白格用 ‘.’ 表示。

示例:

输入:

     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"]]

输出:

[["5","3","4","6","7","8","9","1","2"],
["6","7","2","1","9","5","3","4","8"],
["1","9","8","3","4","2","5","6","7"],
["8","5","9","7","6","1","4","2","3"],
["4","2","6","8","5","3","7","9","1"],
["7","1","3","9","2","4","8","5","6"],
["9","6","1","5","3","7","2","8","4"],
["2","8","7","4","1","9","6","3","5"],
["3","4","5","2","8","6","1","7","9"]]

解释:

输入的数独如上图所示,唯一有效的解决方案如下所示:

提示:

  • board.length == 9
  • board[i].length == 9
  • board[i][j] 是一位数字或者 ‘.’
  • 题目数据 保证 输入数独仅有一个解

2、程序代码

# -*- coding: utf-8 -*-
"""
Created on Fri Dec  3 15:33:29 2021
Function:
@author: 小梁aixj
"""
class Solution(object):def solveSudoku(self, board):def isvaild(i,j):for m in range(9):if m!=i and board[m][j]==board[i][j]:return Falsefor n in range(9):if n!=j and board[i][n]==board[i][j]:return Falsefor m in range(i//3*3,i//3*3+3):for n in range(j//3*3,j//3*3+3):if m!=i and n!=j and board[m][n]==board[i][j]:return Falsereturn Truedef f(a,b,board):for i in range(a,9):for j in range(b,9):if board[i][j]=='.':for c in '123456789':board[i][j]=cif isvaild(i,j):if f(a,b,board):return Trueelse: board[i][j]='.'else: board[i][j]='.'return Falsereturn Truef(0,0,board)return board
#%%
s=Solution()
board=[['5','3','.','.','7','.','.','.','.'],['6','.','.','1','9','5','.','.','.'],['.','9','8','.','.','.','.','.','.'],['8','.','.','.','6','.','.','.','3'],['4','.','.','8','.','3','.','.','1'],['7','.','.','.','2','.','.','.','6'],['.','6','.','.','.','.','2','8','.'],['.','.','.','4','1','9','.','.','5'],['.','.','.','.','8','.','.','7','9']]print('按原样输出:')
print(s.solveSudoku(board))
print('格式化输出:')
#格式化输出
a=s.solveSudoku(board)
for x in range(9):for y in range(9):print(a[x][y], end="  ")print()

3、运行结果


解数独 — Python相关推荐

  1. delphi dbgrideh 遍历每一个单元格_用Python解数独[1]:求每个单元格的行值域

    目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...

  2. python deepcopy函数_用Python解数独[6]:递归获得最终答案

    目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...

  3. 6个步骤教你用Python解数独!(含实例代码)

    前言: 今天为大家带来的内容是:6个步骤教你用Python解数独!(含实例代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,喜欢本文内容的话记得点赞转发收藏不迷路哦! ...

  4. python数独伪代码回溯法_数独的暴力回溯解法和Python GUI

    数独起源于18世纪初瑞士数学家欧拉等人研究的拉丁方阵,20世纪70年代,经过美国及日本学者的推广和改良,定名为数独(Sudoku),大致的意思是"独个的数字"或"只出现一 ...

  5. python数独代码_Python 解数独(Sudoku)

    闲来有了用python解数独的想法,但由于对复杂些的算法仍是一窍不通,最终算是用简单算法实现了出来. 相关简介: 1.使用的算法很常规,很好理解,有点类似深度优先搜索算法. 2.解常规难度的数独耗时约 ...

  6. 用 Python 解数独(Sudoku)

    芬兰数学家因卡拉花费3个月时间设计出的世界上迄今难度最大的数独.数独是 9 横 9 竖共有 81 个格子,同时又分为 9 个九宫格.规则很简单:每个空格填入 1~9 任意一个数字,需要保证每个横排和竖 ...

  7. Python + OpenCV + DeepLearning 解数独问题【一、数独的提取】

    整个解数独问题可以大致分为3个部分: 从图片中提取出完整的数独[本文的部分] 从数独中提取出数字并传入神经网络进行预测 解出数独 [环境] Python:3.8.5 OpenCV:4.5.1 Kera ...

  8. python实现解数独

    leetcode题目地址 https://leetcode-cn.com/problems/sudoku-solver/ 1. 数独的规则 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列 ...

  9. 用python解数独

    本文转自:python解数独--世界最难数独2.3秒完成 解数独用的就是深度优先搜索,有几个方面可以优化一下提高速度: 1.把每个空格的可能的点先列举出来,因为深搜是把遍历的值写入sudoku矩阵再判 ...

最新文章

  1. 常见NoSQL系统使用场景分析
  2. Android-PullLayout
  3. 基于快速原型模型建立商业呼叫中心SPOMP的应用研究
  4. Android --- ConnectTimeout 和 ReadTimeout 所代表的意义
  5. badboy测试工具下载
  6. python实现多人聊天udp_python—多任务版udp聊天机器人
  7. labview my_fpga开发套件下载_LabVIEW面向对象的ActorFramework(1)
  8. 作死 | 程序猿的花式作死,因为你的幽默,你的前途有了!
  9. Codeforces Gym 100286I iSharp 模拟
  10. Spark学习:spark读取HBase数据报异常java.io.NotSerializableException
  11. 创建类(点击获得位置信息)—ArcGIS API for JavaScript
  12. 需要多少次找出较轻的小球
  13. Layui 表格table自定义每一列的样式
  14. c语言字母等腰三角形边框,用C语言编写一个四行*等腰三角形
  15. .net reactor 学习系列(五)---.net reactor针对De4Dot脱壳工具的应对
  16. python词云图生成脚本
  17. 软件开发工程师证书有用吗_软件设计师证书重要吗?
  18. HDU 2415 Bribing FIPA(树形背包)
  19. Python爬虫实战,requests模块,Python实现IMDB电影top数据可视化
  20. Zeppelin的求学之路(2)——配置Spark解释器,job提交到yarn

热门文章

  1. 如何解决 Unity 导入的材质球变粉色的问题?
  2. window 获取文件md5值dos 脚本
  3. python能做什么兼职-学会python可以做哪些兼职?
  4. 主流信用卡收款通道点评--转自zencart论坛
  5. 【JavaScript进阶之旅 ES6篇 第十五章】Set、Map、Set跟Map跟Array跟Object的对比
  6. IPAD密码试错停用了怎么办?教你用正规iTunes刷机恢复,解决忘记密码的问题!以及C盘瘦身的最实用技巧
  7. 计算机软件项目经理资格,计算机软考有软件项目经理吗
  8. 软件测试中的“银行信贷项目“讲解
  9. PIPIOJ 1072: 漫漫上学路 简单dp
  10. Oracle 闪回技术详解