【原创】C#实现数独解题及随机出题的思路及源码分享

前言

业余闲暇时,把若干年前还是开发小白时写的数独解题算法拿出来整理一下,顺带做些优化,并在此做些分享。
数独有多种,这里只说9乘9的数独,来看本篇幅的人相信都知道怎么玩。
话不多说,先上图,UI简洁明了。
在这里插入图片描述

功能描述

本程序基于.netframework使用C#语言开发,实现功能:
1、随机出题(New);
2、一键解题(Compute);
3、输入的合法性校验;

思路分享

说一下开发步骤及思路:

1、验证合法性判断:

根据游戏规则,验证9乘9单元格中的所有非空单元格里的数字是否有违背规则。将此封装成一个函数,传入一个9乘9的二维数组,验证成功则返回true,否则返回false。此算法的实现方式可能千人千变,考验的是小学数学功底,不难。用此算法可判断数独题是否有解。

2、解题思路简述:

依次遍历数独题中的每个空缺位置,从数字1开始尝试填写,每尝试一次,调用一次步骤1的算法。若返回true,则跳到下一个空缺位置,再次从数字1开始尝试填写;若返回false,则用当前尝试的数字+1,再次调用步骤1的算法。如果从1一直尝试到9,都是false,那么说明上一个空缺的位置填错了,需要返回上一个空缺再次尝试+1。这里是一个递归调用,略微有些烧脑,很适合编码新手练习逻辑思维。依次往后计算,直到最后一个空缺填完并返回true,这道数独题就完成了。(说明:当一道数独题有多个解时,我们可以据此算法把所有解都计算出来)

3、随机出题思路:

在9乘9单元格的随机某一行(可以就取第一行)里,和随机某一列(可以就取第一列)里,随机填写1~9的数字(前提是符合数独规则)。然后调用解题算法,将此数独计算出来。然后从完整无缺的数独结果中,随机取其中的若干(限定范围内的随机个数)个数字作为数独题目即可。取出的数字的数量越多,题目越容易,反之越难。

4、UI控制:

动态加载控件,数字颜色控制(原题数字和解题数字颜色各异),单元格按键合法性控制,支持上下左右切换单元格。

源码下载

下载源码:https://download.csdn.net/download/hyq106/31154284
欢迎沟通交流。(提醒:源码是winform版的,下载后可联系本人赠送wpf版源码)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyq106

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值