靶型数独.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档