-->
当前位置:首页 > 题库

编程题:DFS

Luz4年前 (2022-09-06)题库293
在数独游戏中,目标是将1到9(含)之间的整数放入一个9x9网格,这样每行、每列和九个3x3框中的每一个都包含所有九个数字。起始板部分填充,以便逻辑推断其他单元格的值。数独游戏的难度各不相同,解决最难的游戏需要复杂的分析方法。然而,在这个问题中,您将实现最简单的方法之一,交叉阴影。

在交叉图案填充中,我们从九个数字中选择一个,并为网格中的每个数字引用,划掉相应的行、列和3x3框。现在,寻找任何3x3的盒子,其中只有一个可能的数字位置,并将其放置在那里。

下面的第一张图片显示了一个非常稀疏的数独网格。然而,即使在这个网格中,也可以使用交叉阴影推断左上角单元格中的数字是4,如第二幅图所示。

![121.png](~/6a8ec476-e146-4511-a26f-071f103dcda1.png)

你将得到一个部分填充的网格。您的任务是对不同的数字重复应用交叉阴影法,直到不能再对任何数字进行扣除。

数字在网格中的初始位置可能无效。也有可能3x3盒中的数字没有可用的单元格。在这两种情况下,您都需要报告错误


### 输入格式:

输入将由9行组成,每行正好包含9个字符。每个字符要么是1到9之间的数字,要么是表示空单元格的句点('.')。

### 输出格式:

如果输入有效且求解时没有矛盾,则应以给定的格式输出网格,如果可以使用交叉阴影推断其值,则应填充单元格。否则,输出“错误”(为清楚起见,请加引号)。

### 输入样例1:
in
..9......
.....4...
.......4.
.........
.4.......
.........
.........
.........
.........


### 输出样例1:
out
4.9......
.....4...
.......4.
.........
.4.......
.........
.........
.........
.........


### 输入样例2:
in
...1...6.
18...9...
..7.642..
2.9..6.5.
.43...72.
.6.3..9.1
..265.1..
...2...97
.5...3...


### 输出样例2:
out
524137869
186529473
397864215
219476358
843915726
765382941
972658134
638241597
451793682


### 输入样例3:
in
1........
..1......
.......1.
.........
.........
.........
.........
.........
.........


### 输出样例3:
out
ERROR







答案:若无答案欢迎评论