- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数学软件(2)课程设计
数学软件(2)课程设计
数数学学软软件件((22))课课程程设设计计
班 级:数学院 统计班
团队成员:刘彬 刘丹彤 王倩倩
学 号:200900820056 (刘彬)
200900820163 (刘丹彤)
200900820177 (王倩倩)
日 期: 2011年07月20日
得 分::::
评 语::::
1 sudoku
1 sudoku
11 ssuuddookkuu
问题 : 生成与求解
目 录
一、程序分析与设计 1
二、 流程图 9
三、源程序清单 11
四、调试过程 18
五、程序有待改进的地方 23
六、本次编程的收获和建议 24
七、编程结果截屏 24
数学软件(2)课程设计
一、程序分析与设计
1.1.1
1.1.1
11..11..11 问题提出
数独游戏是一种源自18 世纪末的瑞士, 后在美国发展, 并在日本得以发扬光大的数学
智力拼图游戏。游戏规则有三条:在9 ×9的宫格内,填入1—9的数字,满足以下条件:
(1)每行内填入1—9数字不重复
(2)每列内填入1—9数字不重复
(3)每个3 ×3小宫格填入内1—9数字不重复
求解数独问题有很多巧妙办法,在专业求解数独的领域中, 有数对删减法、隐性数对删
减法、三链数删减法、隐性三链数删减法、矩形顶点删减法、三链列删减法等方法,但归根
结底,都是以题目的要求为出发点,即保证每行内1—9数字不重复,每列内1—9数字不重复,
每个小宫格内1—9数字不重复,这些方法充分利用了人脑的机制,将复杂问题简单化,通过
排除,比较,再排除,比较,先确定容易找出的数字,再由此出发,寻找下一个数字,从而,
逐步降低求解难度,将问题解决。
1.1.2
1.1.2
11..11..22 问题分析
本问题要求按照初级、中级、高级的等级自动生成数独游戏并求解。
该问题的核心实质上是求解数独问题,即设计程序,能够解决一般的数独问题。因为
数独的生成建立在求解的基础之上的,我们这里采用挖洞的方法生成数独游戏,即在一个已
有的数独终盘(数独游戏的解)上,按照不同难度等级定义的方法逐步挖去盘上的点,挖洞
的过程中要保证每挖去一个点都要求该数独游戏有唯一解,即每挖去一个点都要调用前面已
经设计好的求解程序,判断是否有唯一解,这样,逐步挖点,直到满足难度要求为止,形成
数独游戏。
刚看到题目,感觉无从下手,经查阅资料,得知解决此问题的关键是要确定每一点的
候选值以及对所有未确定的点进行候选值尝试,但有一个很大的问题,数独游戏的点存储在
9 ×9的矩阵中,而每一个点的候选值也是个向量,如何表达这种三维关系?我们小组的思路
是采用细胞数组,即把每个点所在的行列以及九宫格的数字存储在save{i,j}中,而把每一点
的候选数字存储在choose{i,j}中,这样,可通过下标choose{i,j}(k)直接访问a(i,j)的第k个候选
数字,而且也能够循环,可以说,整个程序的核心是采用细胞数组的方法实现循环,并逐步
排除和回溯的。
1.2
1.2
11..22 解题思路
本问题的求解分为两步:
Step1
Step1
SStteepp11:设计出求解数独的程序,利用比较排除法和回溯法解决一般的数独问题。
Step2
Step2
SStteepp22:采用挖洞的方法,在终盘上按照难度要求随机挖去点,最终生成数独游戏。
文档评论(0)