var
i,j,s,x,y,k,l:integer;
t:boolean;
a:array [19,19] of integer;
b,d:array [182] of integer;
st:string;
begin
for i:=1 to 9 do begin
readln(st);
for j:=1 to 9 do a[i,j]:=ord(st[j])-48;
end;
s:=0;
for i:=1 to 9 do
for j:=1 to 9 do
if a[i,j]=0 then begin
s:=s+1;
d[s]:=(i-1)9+j;
end;
k:=0;l:=0;x:=(d[1]-1) div 9+1;y:=(d[1]-1) mod 9+1;
while l<>s do begin
k:=k+1;
if k>9 then begin
if l=0 then begin
writeln('No Answer!');
halt;
end;
k:=b[l];
a[x,y]:=0;
x:=(d[l]-1) div 9+1;y:=(d[l]-1) mod 9+1;
b[l]:=0;
l:=l-1;
end
else begin
t:=true;
for i:=1 to 9 do
if a[i,y]=k then begin t:=false;break;end;
if t then
for i:=1 to 9 do
if a[x,i]=k then begin t:=false;break;end;
if t then begin
case x of
1,2,3:begin
if (y=1) or (y=2) or (y=3) then
for i:=1 to 3 do
for j:=1 to 3 do
if a[i,j]=k then t:=false;
if (y=4) or (y=5) or (y=6) then
for i:=1 to 3 do
for j:=4 to 6 do
if a[i,j]=k then t:=false;
if (y=7) or (y=8) or (y=9) then
for i:=1 to 3 do
for j:=7 to 9 do
if a[i,j]=k then t:=false;
end;
4,5,6:begin
if (y=1) or (y=2) or (y=3) then
for i:=4 to 6 do
for j:=1 to 3 do
if a[i,j]=k then t:=false;
if (y=4) or (y=5) or (y=6) then
for i:=4 to 6 do
for j:=4 to 6 do
if a[i,j]=k then t:=false;
if (y=7) or (y=8) or (y=9) then
for i:=4 to 6 do
for j:=7 to 9 do
if a[i,j]=k then t:=false;
end;
7,8,9:begin
if (y=1) or (y=2) or (y=3) then
for i:=7 to 9 do
for j:=1 to 3 do
if a[i,j]=k then t:=false;
if (y=4) or (y=5) or (y=6) then
for i:=7 to 9 do
for j:=4 to 6 do
if a[i,j]=k then t:=false;
if (y=7) or (y=8) or (y=9) then
for i:=7 to 9 do
for j:=7 to 9 do
if a[i,j]=k then t:=false;
end;
end;
if t then begin
a[x,y]:=k;
l:=l+1;
b[l]:=k;
k:=0;
x:=(d[l+1]-1) div 9+1;y:=(d[l+1]-1) mod 9+1;
end;
end;
end;
end;
for i:=1 to 9 do begin
for j:=1 to 9 do write(a[i,j]);
writeln;
end;
end
用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),也称行摒除法。
《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
以上就是关于用pascal设计一个可以解数独的程序;全部的内容,包括:用pascal设计一个可以解数独的程序;、基于SAT的数独游戏求解程序,求C语言代码、什么是数独怎么玩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)