谁能告诉我数独游戏的编程思维啊
5个回答
展开全部
一、解数独
1、标记
2、利用各种方法减少标记数量,例如显性数对删减法、隐形唯一数法、隐形数对法、区域删减法、区块删减法、三四链数删减法等等
3、填充,利用唯一值法,如果那个标记中只有一个可填了,这就是结果了。
4、假设法,如果各种方法(至少你知道的)都用了还是没有唯一数,那只能假设了,按一定顺序某个单元格标记中假设一个就是要填充的数,然后重复上面的步骤,如果得到无解(就是出现某个单元格的没有可填的数),那就退回,换一个数继续。(一般这个过程用递归完成)
二、如何生成题目
会解数独后,生成就不是问题了,我的方法是分为两步首先随机填充1-9到第一行,然后用上诉方法产生一个解。再次,随机一个一个数删除,每删除一个数重复上诉方法,看看是否是唯一解,如果是继续删除(不是就恢复,删其它的),直到达到一定目的为止。这样就产生一个数独题目。
1、标记
2、利用各种方法减少标记数量,例如显性数对删减法、隐形唯一数法、隐形数对法、区域删减法、区块删减法、三四链数删减法等等
3、填充,利用唯一值法,如果那个标记中只有一个可填了,这就是结果了。
4、假设法,如果各种方法(至少你知道的)都用了还是没有唯一数,那只能假设了,按一定顺序某个单元格标记中假设一个就是要填充的数,然后重复上面的步骤,如果得到无解(就是出现某个单元格的没有可填的数),那就退回,换一个数继续。(一般这个过程用递归完成)
二、如何生成题目
会解数独后,生成就不是问题了,我的方法是分为两步首先随机填充1-9到第一行,然后用上诉方法产生一个解。再次,随机一个一个数删除,每删除一个数重复上诉方法,看看是否是唯一解,如果是继续删除(不是就恢复,删其它的),直到达到一定目的为止。这样就产生一个数独题目。
展开全部
我刚写了个关于数独的软件 非常强大 如果你要的话留下邮箱地址我给你发过来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
难在如何生成一个有解且有唯一解的初始局。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你参考下面的资料看看,另外还有一篇带源码的,mathe/article/details/1175498
参考资料: http://blog.csdn.net/mathe/article/details/1755672
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
jlf629 高手啊,学习了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询