python图像数独_Python判断有效的数独算法示例
本文实例讲述了Python判断有效的数独算法。分享给大家供大家参考,具体如下:
一、题目
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
1. 数字 1-9 在每一行只能出现一次。
2. 数字 1-9 在每一列只能出现一次。
3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
数独部分空格内已填入了数字,空白格用 ‘.' 表示。
例1:
输入:
[
["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"]
]
输出: true
例2:
输入:
[
["8","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"]
]
输出: false
解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。
但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。
二、解法
先创建三个空数组 row、col、cell,以 cell 为例,里面的每个空字典都代表一个 3×3单元格,然后我们需要把数据一个个填进去
遍历整个二维数组,然后边遍历边把数组分别存入到 行 row , 列 col , 3×3单元格 cell 内的字典,存为key ,而不是 value 。
然后我们就可以判断,行、列、3×3单元格 对应的字典内是否已经存在board[x][y]这个键名,如果存在,那么说明重复了,返回 False
注意,字典中的值这里都为1,但是没有任何意义,你可以随意更改
把数组存入 3×3的单元格是一个难点,num = 3*(x//3)+y//3,这个式子是关键,可以找个数独,然后代入进去好好理解下
当然你也可以不用这个式子,用if/else语句来判断也行,那样比较好理解,但是不如这个式子简洁
类似于: if y<3 : ... elif 3<=y<6 : ... elif 6<=y : ...,
代码如下:
#row,col,cell分别代表行,列,3x3单元格
row, col, cell =
[{}, {}, {}, {}, {}, {}, {}, {}, {}],
[{}, {}, {}, {}, {}, {}, {}, {}, {}],
[{}, {}, {}, {}, {}, {}, {}, {}, {}]
for x in range(9):
for y in range(9):
#取得单元格
num = 3*(x//3)+y//3
temp = board[x][y]
#不需要存入 '.'
if temp != '.':
if (temp not in row[x]
and temp not in col[y]
and temp not in cell[num]):
row[x][temp] = '1'
col[y][temp] = '1'
cell[num][temp] = '1'
else:
return False
return True
时间 64ms,击败了 99.3%
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数组操作技巧总结》、《Python数据结构与算法教程》、《Python列表(list)操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
python图像数独_Python判断有效的数独算法示例相关推荐
- python求最小公倍数_Python实现的求解最小公倍数算法示例
这篇文章主要介绍了Python实现的求解最小公倍数算法,涉及Python数值运算.判断等相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现的求解最小公倍数算法.分享给大家供大家参考,具 ...
- python最小公倍数 菜鸟_Python实现的求解最小公倍数算法示例
本文实例讲述了Python实现的求解最小公倍数算法.分享给大家供大家参考,具体如下: 简单分析了一下,前面介绍的最大公约数的求解方法跟最小公倍数求解方法类似,只需要改一个简单的条件,然后做一点简单的其 ...
- python中英文字符怎么区分-python 利用utf-8编码判断中英文字符的简单示例
这篇文章主要为大家详细介绍了python 利用utf-8编码判断中英文字符的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣python 利用utf-8编码判断中英文字符的简单示例的小伙伴,下 ...
- python图像数独_Python图像识别+KNN求解数独的实现
Python-opencv+KNN求解数独 最近一直在玩数独,突发奇想实现图像识别求解数独,输入到输出平均需要0.5s. 整体思路大概就是识别出图中数字生成list,然后求解. 输入输出demo 数独 ...
- python图像清晰度_python 图像判断,清晰度(明暗),彩色与黑白实例
1,判断图像清晰度,明暗, 原理,Laplacian算法.偏暗的图片,二阶导数小,区域变化小:偏亮的图片,二阶导数大,区域变化快. import cv2 def getImageVar(imgPath ...
- python中最小公倍数函数_Python实现的求解最小公倍数算法示例
这篇文章主要介绍了Python实现的求解最小公倍数算法,涉及Python数值运算.判断等相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现的求解最小公倍数算法.分享给大家供大家参考,具 ...
- python kmeans聚类_python机器学习之k-means聚类算法(1)
k-means算法是一种无监督的机器学习算法,虽然是机器学习,但它简单易于实现.本篇采用python语言,自主编程实现k-menas算法,当然python用专门的库函数来实现该算法,但本次主要使用该算 ...
- python图像检测_Python+Opencv识别两张相似图片
在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简 ...
- python输出偶数_Python 判断奇数偶数的方法
Python 判断奇数偶数的方法 以下实例用于判断一个数字是否为奇数或偶数: # -*- coding: UTF-8 -*- # Filename : test.py # Python 判断奇数偶数 ...
最新文章
- 判断一个字符串的所有字符是否都在另一个字符串中
- VS Code 1.37 发布!多达数十个图标迎来全新设计
- GIL , 线程池 , 同步 , 异步 , 队列 , 事件
- gin 怎么通过 post 发送结构体_Go Web 框架 Gin 实践12—优化配置结构及实现图片上传...
- 飞鸽传书最新C++源码:这两个消息钩子
- 残疾人软件开发_更高级别的可访问性:我使freeCodeCamp指南对残疾人可用的5种方式...
- 用C语言写ucos中断服务程序,在ARM处理器上移植uCOS II的中断处理
- 程序员的时间管理哲学——打造自己的分时管理系统
- 曝华为新成立10大预备军团;被罚2500万欧元,苹果开放第三方支付;GitLab 14.8发布 | 极客头条...
- Windows Azure Cloud Service (8) Role及其生命周期模型
- python编程入门第3版pdf-Python程序设计 第3版pdf
- 对于机器学习而言如何翻越测试集
- 深入浅出4G标准:LTE FDD和LTE TDD
- 施乐7855维修手册中文版_GE苏伊士MK-2EPHARM EDI模块维修、清洗、注意事项
- 2021-05-14 kk日记,TBASE数据表更换shard key
- nf_regester
- 个人博客系统的设计与实现
- python是哪个国家的品牌,爬取全国12个热门城市奶茶店铺情况,看看你的城市哪个品牌最多...
- 中国Linux公社校园联络员第四次全体大会会议记录
- SQLServer还原数据库