数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。

如有多解,输出一个解


输入描述:

输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。

输出描述:

输出九行,每行九个空格隔开的数字,为解出的答案。

#解题想法:首先九宫格判断规则,横、竖、宫格内数字不重复,所以有三种判断方法,取交集看共享的是否
为一个,是一个就填写,但由于存在多解(且此时交集为两个元素),故增加试错机制,当发现零点个数没有
发生变化,便进行试验,并记录当前节点状态,后面如果发现零点的三种判断方法没有交集,便恢复状态,
并确认另外一个值是正确的import sys
def heng(i, j, ll):n = []for m in range(0, 9):if ll[i][m] != 0:n.append(ll[i][m])return list(set([1, 2, 3, 4, 5, 6, 7, 8, 9]) - set(n))
def shu(i, j, ll):n = []for m in range(0, 9):if  ll[m][j] != 0:n.append(ll[m][j])return list(set([1, 2, 3, 4, 5, 6, 7, 8, 9]) - set(n))
def gong(i, j, ll):m1 = i // 3m2 = j // 3n = []for a in range(m1 * 3, m1 * 3 + 3):for b in range(m2 * 3, m2 * 3 + 3):if ll[a][b] != 0 :n.append(ll[a][b])return list(set([1, 2, 3, 4, 5, 6, 7, 8, 9]) - set(n))
if __name__ == "__main__":#     ll = [#         [0, 0, 8, 7, 1, 9, 2, 4, 5],#         [9, 0, 5, 2, 3, 4, 0, 8, 6],#         [0, 7, 4, 8, 0, 6, 1, 0, 3],#         [7, 0, 3, 0, 9, 2, 0, 0, 0],#         [5, 0, 0, 0, 0, 0, 0, 0, 0],#         [8, 6, 1, 4, 0, 3, 5, 2, 9],#         [4, 0, 0, 0, 2, 0, 0, 0, 8],#         [0, 0, 0, 0, 0, 0, 0, 7, 0],#         [1, 0, 7, 0, 6, 8, 0, 5, 0],#     ]while True:isCon = Truell = []for i in range(9):tp = sys.stdin.readline().strip()if not tp:isCon = Falsebreaktp =[int(i) for i in tp.split(' ')]ll.append(tp)if isCon ==False:breakdd=[]q=0r=0w=0for i in range(0, 9):for j in range(0, 9):if ll[i][j] == 0:dd.append([i,j])while len(dd)>0 :ko = len(dd)for r in dd:res = []i=r[0]j=r[1]h1 = heng(i, j, ll)s1 = shu(i, j, ll)g1 = gong(i, j, ll)for o in h1:if o in s1 and o in g1:res.append(o)if len(res) ==0:dd=dlll[q][r]=wdd.remove([i, j])continueif len(res) == 1:ll[i][j] = res[0]dd.remove([i,j])else:continueif ko== len(dd):res = []i = dd[0][0]j = dd[0][1]h1 = heng(i, j, ll)s1 = shu(i, j, ll)g1 = gong(i, j, ll)for o in h1:if o in s1 and o in g1:res.append(o)ll[i][j] = res[0]dl = dd.copy()q=ir=jw=res[1]dd.remove([i, j])for x in ll:x=list(map(str,x))y=" ".join(x)print(y)

华为OD机试题:数独相关推荐

  1. 华为OD机试题 - 数据分类(JavaScript)| 代码+思路+重要知识点

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  2. 华为OD机试题 - 找出重复代码(JavaScript)| 包含代码编写思路

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  3. 华为OD机试题 - 剩余可用字符集(JavaScript)| 含思路

    华为OD机试题 最近更新的博客 使用说明 本篇题解:剩余可用字符集 题目 输入 输出 示例一 输入 输出 说明 Code 解题思路 华为OD其它语言版本 最近更新的博客 华为od 2023 | 什么是 ...

  4. 华为OD机试题 - 优选核酸检测点(JavaScript)| 代码+思路+重要知识点

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  5. 华为OD机试题 - 最大排列(JavaScript)| 代码,编码思路,解题知识点

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  6. 华为od机试题4 真题

    华为od机试题 真题 58.处理所有作业总时长 53.最大停车距离 52.磁盘容量排序 51.非严格递增连续数字序列长度 50.均分糖果 48.没有相同字符的元素长度乘积的最大值 47. 相对开音节结 ...

  7. 华为od机试题1 真题

    华为od机试题 真题 86.射击比赛成绩排序 85.计算屏幕字母数量 84.组成最大数字 82.输出字符串中最小数字 81.数字4的个数 80.整数排列 79.多条件排列 78.时间排序 以下题目附带 ...

  8. 华为od机试题9 真题

    华为od机试题 真题 9.寻找重复字符 7.字符串翻转 6.小朋友身高排序 5.CPU最少执行时间 4.猴子爬山 3.输出信元的值 2.指定元素对最小和 1.勾股数元组 以下题目附带Java解法,是我 ...

  9. 华为od机试题6 真题

    华为od机试题 真题 35.输出满足条件的数对 34.寻找众数中的中位数 33.分配内存 32.窗口和的最大值 31.求整数的连续自然数之和的表达式 30.矩阵的最大值 以下题目附带Java解法,是我 ...

  10. 华为OD机试题整理,已经写了参考代码

    华为OD机试题整理,已经写了参考代码 .链接如下: 华为OD机试题整理链接

最新文章

  1. vue获取dom元素注意问题
  2. solrj 使用记录 - 添加文档
  3. .NETFramework-Web.Mvc:ActionResult
  4. Django运行报错Invalid HTTP_HOST header: ‘0.0.0.0:8000‘. You may need to add ‘0.0.0.0‘ to ALLOWED_HOSTS.
  5. MySQL在多表上创建视图
  6. Active Diretory 全攻略(五)--规划和建立组
  7. 望城——民营经济的“旺城”
  8. 【算法设计与分析】Dijskra算法代码:Java版
  9. 【框架篇】mvc、mvp、mvvm使用关系总结
  10. JavaScript学习随记——面向对象编程(继承)
  11. intellij IDEA--- 报inspects a maven model for resolution problems
  12. [js] 渲染树构建、布局及绘制
  13. vue的mixins属性
  14. VMware vCloud与Zend Server实现PHP应用程序自动化交付
  15. ajax回显500因为#与$的原因
  16. python 取列表偶数和奇数位置的值
  17. 我的地盘我做主—玩转Python函数和变量
  18. FileZilla Server下载以及安装使用
  19. Android Multimedia框架总结(八)Stagefright框架之AwesomePlayer及数据解析器
  20. java的维护_天了噜,Java 8 要停止维护了!

热门文章

  1. 关于年薪百万,聊聊年薪380万的研发人是什么样子的
  2. 2021年茶艺师(中级)考试及茶艺师(中级)考试试卷
  3. NutUI Bingo - 基于 Vue 3.0 的移动端抽奖组件,由京东前端团队打造
  4. Javascript构建Bingo卡片游戏
  5. paoding 中文分词学习
  6. Windows 中的 UAC 用户账户控制
  7. JavaScript数组方法slice()
  8. 步步惊心,Zookeeper集群运维“避坑”指南
  9. C#中的bin和obj文件夹有什么用?
  10. 十进制转换为二进制(短除法)