- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
靶型数独
type arr1=array[1..80,1..9] of boolean;
arr2=array[1..80] of integer;
rec=record
r,len:integer;
h:arr1;
l:arr2;
end;
var h,ht:arr1;
l,lt:arr2;
h1,h2,h3:array[1..9,1..9] of boolean;
h4:array[1..80] of boolean;
a,b,fen:array[1..9,1..9] of integer;
v:array[1..80,1..2] of integer;
n,t,max,c:integer;
zh:array[0..80] of rec;
function sma(x,y:integer):integer;
begin
if xy then sma:=x else sma:=y;
end;
procedure put;
var p,i,j:integer;
begin
p:=c;
for i:=1 to n do inc(p,a[v[i,1],v[i,2]]*fen[v[i,1],v[i,2]]);
if pmax then max:=p;
end;
procedure ready;
var i,j,x,y,min,p:integer;
begin
for i:=1 to 9 do
for j:=1 to 9 do
begin
read(a[i,j]);
b[i,j]:=(i-1) div 3*3+(j-1) div 3+1;
fen[i,j]:=sma(sma(9-i+1,i),sma(9-j+1,j))+5;
if a[i,j]=0 then begin
inc(n); v[n,1]:=i; v[n,2]:=j;
end else begin
h1[i,a[i,j]]:=true;
h2[j,a[i,j]]:=true;
h3[b[i,j],a[i,j]]:=true;
inc(c,a[i,j]*fen[i,j]);
end;
end;
min:=9; p:=0;
for i:=1 to n do begin
x:=v[i,1]; y:=v[i,2];
for j:=1 to 9 do if (not h1[x,j]) and (not h2[y,j]) and (not h3[b[x,y],j]) then
begin
inc(l[i]); h[i,j]:=true;
end;
if l[i]min then begin min:=l[i]; p:=i; end;
end;
t:=1; zh[t].r:=p;
zh[0].h:=h; zh[0].l:=l;
h4[p]:=true;
end;
procedure zhao;
var min,p,i:integer;
begin
min:=9; p:=0;
for i:=1 to n do if not h4[i] then if lt[i]min then
begin
min:=lt[i]; p:=i;
end;
inc(t); zh[t].r:=p;
zh[t].len:=0; h4[p]:=true;
end;
procedure expend(z:integer);
var x,y,i:integer;
begin
x:=v[zh[t].r,1]; y:=v[zh[t].r,2];
ht:=zh[t-1].h; lt:=zh[t-1].l;
for i:=1 to n do if not h4[i] and ht[i,z] then
if (v[i,1]=x) or (v[i,2]=y) or (b[v[i,1],v[i,2]]=b[x,y]) then
begin
dec(lt[i]); ht[i,z]:=false;
if lt[i]=0 then exit;
end;
a[x,y]:=z;
if t=n then begin put; exit; end;
zh[t].h:=ht; zh[t].l:=lt;
zhao;
end;
procedure work;
begin
while t0 do
begin
inc(zh[t].len);
if zh[t].len9 then
beg
文档评论(0)