首页 > 试题广场 >

数独

[编程题]数独
  • 热度指数:1981 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
数独是一个非常有名的游戏。整个是一个9X9的大宫格,其中又被划分成9个3X3的小宫格。要求在每个小格中放入1-9中的某个数字。要求是:每行、每列、每个小宫格中数字不能重复。 现要求用计算机求解数独。(50分)

输入描述:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的数字。


输出描述:
输出九行,每行九个空格隔开的数字,为解出的答案。
示例1

输入

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

输出

7 9 3 8 5 1 4 6 2
8 4 1 2 6 7 5 3 9
6 5 2 3 9 4 1 7 8
3 2 8 4 7 6 9 5 1
5 7 4 9 1 8 6 2 3
9 1 6 5 2 3 7 8 4
1 8 9 7 3 5 2 4 6
2 3 5 6 4 9 8 1 7
4 6 7 1 8 2 3 9 5
头像 MichelleWu
发表于 2023-09-27 00:26:58
#学习到的知识: #将一个列表list1行列进行颠倒:list2=[list(row) for row in zip(*list1)] #回溯算法 #回溯算法的基本思想是通过尝试不同的选择,并在遇到无效选择时进行回溯,直到找到解决方案为止。它是一种深度优先搜索(DFS)的变种,通常通过递归来实现。 展开全文
头像 重生之我要当分子
发表于 2025-01-06 23:52:52
解题思路 这是一个经典的回溯算法问题。需要通过尝试不同的数字来填充空格,直到找到一个合法的解。 关键点: 使用回溯算法尝试每个空格的可能数字 检查行、列、3x3小方格是否合法 优化搜索策略,提前剪枝 找到解后立即返回 算法步骤: 找到一个空格(值为0的位置) 尝试填入1-9的数字 检查是否合法 展开全文