解数独算法(python)

本文介绍了如何利用迭代思想来解决数独问题。通过设计数独单元格之间的影响关系,不断尝试填充数值并检查冲突,最终找到解决方案。具体代码展示了在Python中实现这一算法的过程,强调理解迭代的核心在于关注当前单元格与后续单元格的关系,而非具体实现细节。通过这种方法,突显了计算机在执行规则明确的任务时的强大能力。
摘要由CSDN通过智能技术生成

一、数独的规则
横排、竖排以及3X3的格子里均为1-9,且相互不同。
二、具体思路
利用函数迭代,在确定(i,j)位置的数时,遍历它后面的所有位置,如果没有冲突,即可确定,如有冲突则先确定(i,j)后面位置上的值。最主要的是设计好(i,j)与其后面一位可能是(i,j+1)或(i+1,0)的影响关系,而不用去管具体是怎么实现的,感觉这就是迭代的精髓。
三、具体代码和解释

#首先写一个判断某行某列能否为某个值得判断函数,
def check(i, j, k, matrix):#其中i代表行,j代表列,k代表某个固定值,arr为此刻的矩阵
    for n in range(0,9):#n作为循环值,遍历第i行所有元素;遍历第j列所有元素;遍历在(i,j)此位置所在的3X3格子里的所有元素
        if  matrix[i][n]==k or  matrix[n][j]==k or  matrix[(i//3)*3+n//3][(j//3)*3+n%3]==k :return 0#判断如果有K这个值,则(i,j)位置上不可填入k
    return 1#否则(i,j)位置上可填入k
def     sudok(i,j, matrix):#主函数 i代表行,j代表列,matrix代表数独
    if i==9 :#最终
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值