首页 > 试题广场 >

数独

[编程题]数独
  • 热度指数:11802 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请编写一个程序,给数独中的剩余的空格填写上数字
空格用字符'.'表示
假设给定的数独只有唯一的解法

这盘数独的解法是:
红色表示填上的解
示例1

输入

[[.,.,9,7,4,8,.,.,.],[7,.,.,.,.,.,.,.,.],[.,2,.,1,.,9,.,.,.],[.,.,7,.,.,.,2,4,.],[.,6,4,.,1,.,5,9,.],[.,9,8,.,.,.,3,.,.],[.,.,.,8,.,3,.,2,.],[.,.,.,.,.,.,.,.,6],[.,.,.,2,7,5,9,.,.]]

输出

[[5,1,9,7,4,8,6,3,2],[7,8,3,6,5,2,4,1,9],[4,2,6,1,3,9,8,7,5],[3,5,7,9,8,6,2,4,1],[2,6,4,3,1,7,5,9,8],[1,9,8,5,2,4,3,6,7],[9,7,5,8,6,3,1,2,4],[8,3,2,4,9,1,7,5,6],[6,4,1,2,7,5,9,8,3]]
头像 牛客786963925号
发表于 2021-07-17 11:03:15
精华题解 解法一: 解法一的思路较为直接:对数独中的每个位置,若其不为.,即没有被数字所填,则从数字1至9遍历,分别填写该位置,并检验此时数独是否有效。若成功填满最后一个位置,即是该数独的解,否则将填写的位置重置,继续遍历。 解法一的思路如图所示。 在「检验数独」是否有效时,需要如下3个步骤: 检验数独 展开全文
头像 未来0116
发表于 2021-07-12 10:07:25
精华题解 一.题目描述NC47数独题目链接:https://www.nowcoder.com/practice/5e6c424b82224b85b64f28fd85761280?tpId=196&&tqId=37077&rp=1&ru=/activity/oj&qru= 展开全文
头像 堆栈哲学
发表于 2021-07-15 13:38:02
精华题解 解法一:递归回溯 递归参数: 因为解数独找到一个符合的条件(就在树的叶子节点上)立刻就返回,相当于找从根节点到叶子节点一条唯一路径,所以需要使用bool返回值, 终止条件: 递归的下一层的棋盘一定比上一层的棋盘多一个数,等数填满了棋盘自然就终止(填满当然好了,说明找到结果了),所以不需要终止条 展开全文
头像 牛一霸
发表于 2021-07-15 22:26:36
精华题解 题目:数独 描述:请编写一个程序,给数独中的剩余的空格填写上数字 空格用字符'.'表示 解法一: 思路分析:首先我们通过该题目了解一下什么是数独,数独是十八世纪在瑞士产生的一种小游戏,是通过不断的演算推导出来的逻辑游戏,在上述中,属于9行9列的格子,且被分为9个3*3的方 展开全文
头像 华科不平凡
发表于 2020-09-01 16:11:22
需要满足的条件—— 每行/每列数字不能重复 划分为9个九宫格区域后,每个区域内数字不能重复 如何判断每个九宫格内数字不重复呢?以第一个和第二个九宫格为例: (0,0), (0,1), (0,2)|||(0,3), (0,4), (0,5) (1,0), (1,1), (1,2)|||(1,3) 展开全文
头像 勤奋的猫
发表于 2022-12-03 23:03:44
import java.util.* ; public class Solution { static class Position { int x; int y; Position(int x, int y) { 展开全文
头像 姐姐的遮阳伞
发表于 2022-03-24 18:56:54
public class Solution { public void solveSudoku(char[][] board) { process(board); } public boolean isValid(char[][] board, i 展开全文
头像 十块大洋。
发表于 2021-10-25 17:56:56
这题挺难的,其中的board的作用么有搞明白,欢迎专业人士给出意见咯~ # # # @param board char字符型二维数组 # @return void # class Solution: def solveSudoku(self , board ): # wr 展开全文
头像 GoodLuck·HQ
发表于 2020-10-08 16:19:08
public class Solution { public void solveSudoku(char[][] board) { dfs(board,0,0); } boolean dfs(char[][] board,int x,int y){ 展开全文
头像 Coming680
发表于 2022-03-15 21:54:33
class Solution { public: vector<vector<char> > ans; bool check(vector<vector<char> > &board,int row,int col,char v 展开全文
头像 leaves0924
发表于 2021-10-18 00:24:28
题目描述 请编写一个程序,给数独中剩余的空格填写上数字,空格用字符'.'来表示,假设给定的数独只有唯一的解法。 示例1: 输入: [[.,.,9,7,4,8,.,.,.],[7,.,.,.,.,.,.,.,.],[.,2,.,1,.,9,.,.,.],[.,.,7,.,.,.,2,4,.],[.,6 展开全文
头像 城南亦南
发表于 2022-04-07 15:37:47
class Solution { /** * 检查在数独(x,y)处填入num,是否合法 * @param board 数独 * @param x x * @param y y * @param num 要检测的数字 * @retu 展开全文
头像 求offer牛
发表于 2022-11-23 13:51:36
# # # @param board char字符型二维数组 # @return(756076230) void # class Solution: def is_vai(self,row,col,num,board): """ 判断当前值是否符合要求(行列块不重复) 展开全文
头像 有胆量的柯基在学习
发表于 2025-09-08 12:32:28
class Solution { public: void solveSudoku(vector<vector<char> >& board) { backtrack(board); } bool backtrack(vec 展开全文

问题信息

难度:
44条回答 18381浏览

热门推荐

通过挑战的用户

查看代码
数独