
当年我们做大程的时候本来也想做数独来着,后来时间不够没做成不知道专业人士怎么编的,只能提供一点当时的思路给你,
199个格子对应一个数组A,数组的第一个值从0到9表示其中填的数字,0就是不填,另一个值表示它在桌面上的位置就是坐标
2需要10张,空白和9个数字
3通过对鼠标点击的反应改变格子数组A的值,且将相应覆盖在相应坐标上
4事先输入若干组数组A的值(每组81个数),作为题库
5进行游戏时随机抽取题库中的一组,再随机抽取若干格子显示出来,其他留白
6填完后用三个循环判断下每行每列每块是否有相同的数字,没有则通过
具体编按钮、放图、鼠标点击响应等各种问题查一下书,有很多书上有很多教的这种一小段一小段的程序源代码,直接抄下就行了。
加油^^
数独(shù dú)是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(33)内的数字均含1-9,不重复 。
数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。
一、玩数独的方法有两个,就是直观法与直观法候选数法,具体介绍有:
1、直观法:不做任何记号,直接从数独的盘势观察线索,推论答案的方法。
2、候选数法:删减等位群格位已出现的数字,将剩余可填数字填入空格作为解题线索的参考,可填数字称为候选数(Candidates,或称备选数)。
3、直观法和候选数法只是填制时候是否有注记的区别,依照个人习惯而定,并非鉴定题目难度或技巧难度的标准,无论是难题或是简单题都可上述方法填制,一般程序解题以候选数法较多。
二、数独基本由三个连续宫组成大行列,分大行及大列组成。
第一大行:由第一宫、第二宫、第三宫组成。
第二大行:由第四宫、第五宫、第六宫组成。
第三大行:由第七宫、第八宫、第九宫组成。
第一大列:由第一宫、第四宫、第七宫组成。
第二大列:由第二宫、第五宫、第八宫组成。
第三大列:由第三宫、第六宫、第九宫组成。
出题方法
1、挖洞法
从有到无的出题方法。先生成一个终盘,然后挖去部分数字形成一道题目。
2、填数法
从无到有的出题方法。在一个空盘面上填上部分数字形成一道题目。
单向扫看法:在第一个例子中,我们注意看一下第2宫。
我们知道,每个宫内必须包含数字9,第1宫以及第3宫中都包含数字9,并且第1宫的9位于第3行。
第3宫的9位于第2行,这也就意味着第2宫的9不能在第2行和第3行,所有第2宫的9只能放置在第2宫第1行的空格内。
2双向扫看法:同样的技巧也可以扩展到相互垂直的行与列中。让我们想一下第3宫中1应该放在哪里。在这个例子中,第1行以及第2行已经有1了,那么第3宫中只有底部的俩个空格可以填1。不过,方格g4已经有1了,所有第g列不能再有1。
所以i3是该宫唯一符合条件填上数字1的地方。
3寻找候选法:通常地,一个方格只能有一个数字的可能性,因为剩下的其他8个数字都已经被相关的行列宫所排除了。我们看一下下面例子中b4这个方格。b4所在的宫中已经存在了数字3,4,7,8,1和6位于同一行,5和9位于同一列,排除上述所有数字,b4只能填上2。
4数字排除法:排除法是一个相对繁杂的寻找数字的方法。我们可以从c8中的1间接推出e7和e9必须包含数字1,不管这个1在哪个方格,我们可以确认的是,第e列的数字1肯定在第8宫内,所以第2宫内中间这一列就不可能存在数字1。因此,第2宫的数字一必须填在d2处。
1、宫内数对占位:法数对占位法指的是在某个区域中使得某两数只能出现在某两格内,无法判断这两个数字的位置,利用两数的占位排斥掉其他数字出现在这两格,再结合排除法就可以间接填出下个数字。
2、唯余解法:利用数独中每格内都只有9种数字的可能性,如果某格中有8种数字都不能填,填入唯一未出现数字的方法。
3、行列区块:利用行列排除,在某行或列内制造出一个区块,利用该区块对该区块所在宫的其他格进行删除的方法。
扩展资料:
数独(九宫格)的规律是每一行、每一列、每一个粗线宫(33)内的数字均含1-9,不重复。
当一个单元(行、列、宫)的某两个数字仅可能在某两格时,称这两个格为这两个数的数对(Pairs)。数对出现在宫称为宫数对;数对出现在行列成为行列数对。
用0代表要填的数
#include <stdioh>
#include <stdlibh>
#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),也称行摒除法。
数独游戏,是一个九宫格,每一宫又分为九个小格。在这八十一格中给出一定的已知数字,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次。
请见下图例子,事先给的数字条件越多,解题的速度越快。
扩展资料:
数独是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(33)内的数字均含1-9,不重复。
参考资料:
《KS数独思维》百度网盘免费下载
链接:>pwd=1234
提取码:1234
很多家长都有这样的疑问,如何才能让孩子学好数学,其实,学习数学不仅仅是算术,而是逻辑推理能力的培养,数独是公认的提升加强孩子逻辑推理最有效的方法,通过玩数独,孩子不但收获了严密的逻辑思维,还享受了提升了数感和逻辑推理带来的快乐,通过系统的思维训练,让孩子变得更聪明、更专注、更仔细,思维能力更强~~让孩子拥有走的更远的能力。
文件目录
01数独的起源avi
02发现身边有趣的数独元素avi
03逻辑思维线avi
04数独王国中千姿百态的数独之花avi
05漏漏avi
06多多avi
07顺顺avi
08追踪avi
09神奇的小尾巴avi
10六宫变型数独avi
11宫内排除法avi
12行列排除法avi
13区块排除法avi
14唯余法avi
数独题目的已知数字并不是随意摆放出来的。
一般来说有两种方法出题,无论手工或者程序基本都如此。
1、挖洞法。非常多的数独都是这样出的,包括绝大多数数独程序也都是这样出的。就是随机生成一个符合数独终盘的方阵,然后挖数字,挖掉后验证是否有解,有的话就继续挖,没有的话,那个数字就不能挖。挖掉一定量数字就是数独题目了,一般挖到30个左右难度不大。
2、反推法。根据数独解题的方法,一点一点的加数字,每加一个数字都是根据数独技巧反推回去的,直到加到题目能解为止,这种方法难度较大。也有高级数独程序可能采用这种方法,能生成条件限制比较苛刻的数独题目。
详细的介绍一些散落的文章或帖子里有,有兴趣你可以自己搜搜。
也欢迎来百度数独吧,我是吧主。>
以上就是关于c语言 编程 数独全部的内容,包括:c语言 编程 数独、什么是数独、数独方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)