编程解决数独
Ⅰ 如何编程快速出数独题目
这个网上有很多算法的 基本思路就是:找到每个空格的可能数字,从可能数字数最少的空格开始填写,遇到错误就返回,直到填完所有空格
我也用网上的算法做了matlab和c的数独求解器 可以用
Ⅱ 谁能告诉我数独游戏的编程思维啊
一、解数独
1、标记
2、利用各种方法减少标记数量,例如显性数对删减法、隐形唯一数法、隐形数对法、区域删减法、区块删减法、三四链数删减法等等
3、填充,利用唯一值法,如果那个标记中只有一个可填了,这就是结果了。
4、假设法,如果各种方法(至少你知道的)都用了还是没有唯一数,那只能假设了,按一定顺序某个单元格标记中假设一个就是要填充的数,然后重复上面的步骤,如果得到无解(就是出现某个单元格的没有可填的数),那就退回,换一个数继续。(一般这个过程用递归完成)
二、如何生成题目
会解数独后,生成就不是问题了,我的方法是分为两步首先随机填充1-9到第一行,然后用上诉方法产生一个解。再次,随机一个一个数删除,每删除一个数重复上诉方法,看看是否是唯一解,如果是继续删除(不是就恢复,删其它的),直到达到一定目的为止。这样就产生一个数独题目。
Ⅲ c语言 编程 数独
当年我们做大程的时候本来也想做数独来着,后来时间不够没做成.不知道专业人士怎么编的,只能提供一点当时的思路给你,
1.9*9个格子对应一个数组A,数组的第一个值从0到9表示其中填的数字,0就是不填,另一个值表示它在桌面上的位置就是坐标
2.需要10张图片,空白和9个数字
3.通过对鼠标点击的反应改变格子数组A的值,且将相应图片覆盖在相应坐标上
4.事先输入若干组数组A的值(每组81个数),作为题库
5.进行游戏时随机抽取题库中的一组,再随机抽取若干格子显示出来,其他留白.
6.填完后用三个循环判断下每行每列每块是否有相同的数字,没有则通过.
具体编按钮、放图、鼠标点击响应等各种问题查一下书,有很多书上有很多教的这种一小段一小段的程序源代码,直接抄下就行了。
加油^^
Ⅳ 基于SAT的数独游戏求解程序,求C语言代码
用0代表要填的数
#include <stdio.h>
#include <stdlib.h>
#define SIZE 9
#define get_low_bit(x) ((~x&(x-1))+1)
struct{
int left;
char num;
char try;
}board[SIZE][SIZE];
int bit2num(int bit)
{
switch(bit){
case 16:
case 256:
return 9;

基础解法
排除法(摒除法)
摒除法:用数字去找单元内唯一可填空格,称为摒除法,数字可填唯一空格称为排除法 (Hidden Single)。
根据不同的作用范围,摒余解可分为下述三种:
数字可填唯一空格在“宫”单元称为宫排除(Hidden Single in Box),也称宫摒除法。
数字可填唯一空格在“行”单元称为行排除法(Hidden Single in Row),也称行摒除法。
Ⅳ 有没有好的算法编程解决数独的正确答案
有啊,而且各种语言基本都有。
其中比较经典的舞蹈链算法对常见的标准数独来说简直就是秒解!甚至每秒解几千个几万个。
