论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
数独◎终结者

[科技论文网] http://www.scipapers.com    2007-12-01  

     
    数独◎终结者
    内容摘要 README 使用方法: STEP One:在文本文档中 写入81个数(待填的用0表示,每九个换行,美两个数之间空一个)保存为 input.in(主意后缀) 运行 “数独终结者” 文件夹内会生成一个Answer.out的文件,用文本打开,便是答案 (bestshudu.pas是源程序(pascal)) 特别注意:请不要输入过于“松弛“的数据,终结者会算出所有的解答。 作者 : 刘仲林学校:上外附中 高一(二)班联系方式: QQ:610179465 MSN:lzl901030@126.com

    type
     tmap=array[1..81] of byte;
    Const
      sort:array[1..9,1..9] of integer=(( 1,2,3,10,11,12,19,20,21),
                                        ( 4,5,6,13,14,15,22,23,24),
                                        ( 7,8,9,16,17,18,25,26,27),
                                        (28,29,30,37,38,39,46,47,48),
                                        (31,32,33,40,41,42,49,50,51),
                                        (34,35,36,43,44,45,52,53,54),
                                        (55,56,57,64,65,66,73,74,75),
                                        (58,59,60,67,68,69,76,77,78),
                                        (61,62,63,70,71,72,79,80,81));
    var
      i,j:integer;
      map:tmap;
    Procedure print;
    var i,j:integer;
    begin
     for i:=1 to 81 do begin
      write(map[i]:2);
      if i mod 9=0 then writeln;
     end;
     writeln;
     readln;
    ENd;
    Procedure try(x:integer);
    var i,j,k,l:integer;
        t:tmap;
        b:array[0..9] of boolean;
    begin
    if x>81 then begin
      print;
      exit;
    end;
    fillchar(b,sizeof(b),false);
    if map[x]<>0 then b[1]:=true;
    if map[x]=0 then begin
       for j:=1 to 9 do b[j]:=true;
       {check rows}
       for j:=1 to 81 do
         if (j mod 9=x mod 9) then b[map[j]]:=false;
       {check blocks}
       for l:=1 to 9 do
         for j:=1 to 9 do
         if sort[l,j]=x then begin
            for k:=1 to 9 do b[map[sort[l,k]]]:=false;
         break;
         end;
       {Check lines}
       l:=x mod 9;
       if l=0 then l:=9;
       for j:=1 to l-1 do
         b[map[x-j]]:=false;
       for j:=1 to 9-l do
         b[map[x+j]]:=false;

    end;
     for i:=1 to 9 do
      if b[i] then begin
         t:=map;
         if map[x]=0 then map[x]:=i;
         try(x+1);
         map:=t;
      end;
    End;
    begin
      assign(input,'input.in');reset(input);
      assign(output,'Answers.out');rewrite(output);
      writeln('^.^  数独立终结者  ^.^ ');
      for i:=1 to 81 do begin
         if i mod 9 =0 then readln(map[i]) else read(map[i]);
      end;
      try(1);
    writeln('作者 : 刘仲林');
    writeln(‘学校:上外附中       高一(二)班’);
    writeln('联系方式: ');
    writeln('QQ:610179465');
    writeln('MSN:lzl901030@126.com');
      close(input);close(output);
      readln;
    End.

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
数独◎终结者
下面没有链接了     使用指针P\Q使链表反转
最新论文
·[程序设计] 数独◎终结者
·[程序设计]使用指针P\Q使链表反转
·[程序设计]格雷码算法
·[程序设计]大数阶乘源码
·[程序设计]随机算法研究
·[程序设计]拷贝链表的O(n)算法
·[程序设计]Prim算法完整实现代码
·[程序设计]矩阵旋转算法的实现
·[程序设计]格雷码算法C源码
·[程序设计]凸壳串行算法
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com