数独杀手

数独杀手(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.

数独杀手,布布扣,bubuko.com

时间: 2024-12-19 03:26:43

数独杀手的相关文章

第二次作业——个人项目实战:数独

1.阅读 刚开始泛看<构建之法>的时候,还是觉得非常难理解里面的内容,特别是代码部分.后来第二次拿起这本书,从第一章开始看起,慢慢了解了"软件企业=软件+商业模式"和对软件工程的定义,但是更多地还是记忆了一遍,没有明白这里面的深意:看第二章的时候,跟着单元测试.回归测试的.效能分析的内容自己照着书上的代码敲了一敲,偶尔会出现bug,但是能得到书上所说的效果还是很开心的,效能分析,感觉就是代码的效率问题,追求高效,然后接触到了软件工程师的一套模型-个人开发流程PSP,我也尝试

洛谷 【P1074】靶形数独

P1074 靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的“靶形数独”,作为这两个孩子比试的题目. 靶形数独的方格同普通数独一样,在 9 格宽×9 格高的大九宫格中有 9 个 3 格宽×3 格 高的小九宫格(用粗黑色线隔开的).在这个大九宫格中,有一些数字是已知的,根据这些数字,利用逻辑推理,在其他的空格上填入 1 到 9 的数字.每

#计算机#数独

数独是一项益智小游戏,规则简单易懂,但内容千变万化.这次我想要研究的是用java编程实现解数独和数独题目的生成.首先要弄清数独的游戏规则:在一个9×9的方格中分布着1-9的数字和空格,玩家在空格中填写适当的数字,使得每行.每列.9个3×3的方格中数字1-9均只出现一次. 对于解数独初步构思的时候我产生了两种想法: 第一种想法利用计算机强大的运算能力,遍历当前空格所有可以填入的数字,向后递归,当某个空格不能填入数字,而空格数不为零时返回上一步.如果某一步只能填入一个确定的数字,可以把这一步优先填好

安卓旅途之——开发数独(一)

安卓旅途之——开发数独(一) 数独游戏简介 数独游戏,是一种数学智力拼图游戏,是“独立的数字游戏”的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大. 数独游戏可以训练玩家的逻辑推理能力,不少教育者皆认为数独是锻炼脑筋的好方法. 其规则如下: 1.游戏会从一个部分带有数字的九宫格开始. 在9×9的大九宫格(即3格宽×3格高)方阵里,每一格又细分为一个小九宫格. 2.游戏开始,已给定若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字. 3.填数字时必须满足以下条件

使用AxureRP7.0制作经典数独小游戏原型,axure游戏原型下载

之前,有同学在Q群中提问,如何使用axure制作经典数独解谜小游戏,当时由于时间关系没有来得及亲手制作,而是给同学们提供了Axure6.5版本的一个数独解谜游戏的原型,本教程由axure原型库网站录制,转载请注明出处!但是那个原型做的太过繁杂,所以仅供大家参考交流:在此,金乌老师特地抽时间给同学们使用AxureRP7.0制作了一下,感觉对实战逻辑分析和axure变量的掌握比较有考验,所以就放出来供大家学习交流使用. 在学习的过程中,如果你仅凭自己现有的对axure的掌握,无法准确分析并组织出原型

洛谷—— P1784 数独

https://www.luogu.org/problem/show?pid=1784 题目描述 数独是根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫内的数字均含1-9,不重复.每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的. 芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战. 这位数学家说,他相信只有“智慧最顶尖”的人才有可能破解这个“数独之谜”. 据介绍,目前数独游戏的难度的

HDU 1426 Sudoku Killer【DFS 数独】

自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品———HDU免费七日游外加lcy亲笔签名以及同hdu acm team合影留念的机会. 所以全球人民前仆后继,为了奖品日夜训练茶饭不思.当然也包括初学者linle,不过他太笨了又没有多少耐性,只能做做最最基本的数独题,不过他还是想得到那些奖品,你能帮帮他吗?你只要把答案告诉他就可以,不用教他是怎么做的

[NOIP2009] 靶形数独

[NOIP2009] 靶形数独 传送门 题目 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z博士请教,Z 博士拿出了他最近发明的“靶形数独” ,作为这两个孩子比试的题目. 靶形数独的方格同普通数独一样,在 9 格宽×9 格高的大九宫格中有 9 个 3 格宽×3 格高的小九宫格(用粗黑色线隔开的) .在这个大九宫格中,有一些数字是已知的,根据这些数字,利用逻辑推理,在其他的空格上填入 1到 9 的

bzoj3109 [cqoi2013]新数独

Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v). Output 输出包含9行,每行9个1~9的数字,以单个空格隔开.输入保证解惟一. Sample Input < > > < > < v v ^ ^ v v ^ ^ ^< < > < > < ^ ^ ^ v ^ ^ ^ v v< < < < >