随机数独终盘,数独初盘的生成思路

近日,整理了下数独的资料,特来分享

把数独分成9个小九宫格后

第一步,填好中心的小九宫格

接着行列变换填第4、第6个小九宫格

再行列变换填第2、第8个小九宫格

然后以第2个小九宫格为中心,行列变换填第1、第3个小九宫格

最后以第8个小九宫格为中心,行列变换填第7、第9个小九宫格

自此,数独终盘生成完毕

那为了更加随机一点。

可以任意交换 属于同一个九宫格 两整行或者两整列的数据。

那么终盘有了,初盘呢

实行随机挖洞,挖N个洞后,每挖一个洞,通过【唯一解算法】验证是否唯一解。

最后是根据唯一解递归函数次数 (哈哈,一般是用递归吧。),进行简单的难度评级。

难度不合格则重新生成。

为了更加直观,终盘生成步骤全部做成了图片

【唯一解算法 简单思路】

1.空数字的格子,根据同行 同列 同小九宫格 生成 备选数字数组。

2.备选数字 只为1个的格子,直接填入,同行 同列 同小九宫格的 其他格子备选数字数组中 ,有这个数字的,从备选数字数组 删除这个数字。

3.选一个备选数字最少的格子,任意填入1个备选数字。

4.重复2,3步骤,到【成功填完整】 ,就累计1种解。 

5.累计只有1种解,则是唯一解。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值