zoukankan      html  css  js  c++  java
  • 数独杀手

    数独杀手(math.c/cpp/pas)
    【题目大意】
    用程序解出数独,按要求输出即可。
    【输入数据】
    要求完成的数独,未填处为 0。
    【输出数据】
    输出完成后数独。
    【输入样例】
    2 7 6 0 0 0 0 8 0
    3 0 0 8 0 0 0 1 5
    5 0 0 2 0 9 7 0 0
    0 8 2 3 0 0 4 0 0
    0 0 0 0 5 0 0 0 0
    0 0 1 0 0 4 3 6 0
    0 0 4 5 0 8 0 0 7
    1 6 0 0 0 3 0 0 4
    0 3 0 0 0 0 5 2 1
    【输出样例】
    2 7 6 1 4 5 9 8 3
    3 4 9 8 6 7 2 1 5
    5 1 8 2 3 9 7 4 6
    6 8 2 3 7 1 4 5 9

    4 9 3 6 5 2 1 7 8

    7 5 1 9 8 4 3 6 2

    9 2 4 5 1 8 6 3 7
    1 6 5 7 2 3 8 9 4
    8 3 7 4 9 6 5 2 1

    ------------------------

    传说中的码农题?(因为halt前没写close导致标准输出比我的输出长,惨痛教训!!!)

    type
      c=array[1..9]of boolean;
    var
      a:array[1..9,1..9]of longint;
      b:array[1..9,1..9]of boolean;
      ok:c;
      o:array[1..81]of record i,j:longint; end;
      i,j,num,ci,cj:longint;
    procedure dfs(d:longint;ok:c);
    var i,j,k,x,y:longint;
    begin
      if d=num+1 then
        begin
          for i:=1 to 9 do
            begin
              for j:=1 to 9 do write(a[i,j],' ');
              writeln;
            end;
          halt;
        end;
      x:=o[d].i;  y:=o[d].j;
      for i:=1 to 9 do ok[i]:=true;
      for j:=1 to 9 do if (b[x,j])then ok[a[x,j]]:=false;//行和列
      for i:=1 to 9 do if (b[i,y])then ok[a[i,y]]:=false; 
      ci:=((x-1) div 3)*3+1;   cj:=((y-1) div 3)*3+1;  //九宫格
      for i:=ci to ci+2 do
        for j:=cj to cj+2 do if (b[i,j]) then ok[a[i,j]]:=false;
      for k:=1 to 9 do
        if ok[k] then
        begin
          a[x,y]:=k;
    
          b[x,y]:=true;
          dfs(d+1,ok);
          b[x,y]:=false;
        end;
    end;
    begin
      assign(input,'math.in');  assign(output,'math.out');
      reset(input);  rewrite(output);
      for i:=1 to 9 do
        for j:=1 to 9 do
          begin
            b[i,j]:=true;
            read(a[i,j]);
            if a[i,j]=0 then
              begin
                b[i,j]:=false;
                inc(num);
                o[num].i:=i;  o[num].j:=j;
              end;
          end;
      dfs(1,ok);
      close(input);  close(output);
    end.
  • 相关阅读:
    微软发布3款SQL Injection(SQL 注入)攻击检测工具
    TortoiseSVN 使用介绍
    windows下的Bug跟踪管理软件Bugfree的安装
    国内PHP开源建站程序一览
    55个经典开源Windows工具
    JavaScript代码格式化工具(JS代码分析必备)
    Javascript工具 使用packer来压缩JS文件
    开源UML设计工具StarUML
    看似简单的问题其实不简单
    Javascript工具 使用JSDoc建立JavaScript代码的文档
  • 原文地址:https://www.cnblogs.com/zjhl2/p/3855987.html
Copyright © 2011-2022 走看看