Leetcode sudoku-solver

这是一个关于如何使用深度优先搜索(DFS)算法解决LeetCode上的数独问题的博客。主要内容包括理解题意,建立合法性判断函数以及实现递归的DFS过程。在DFS过程中,对空格填充合法数字并检查行、列和九宫格的重复性。当找到唯一解时返回,若无法继续则回溯,将当前位置恢复为空格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

请编写一个程序,给数独中的剩余的空格填写上数字

空格用字符'.'表示

假设给定的数独只有唯一的解法

这盘数独的解法是:

 

思路:经典的搜索问题,和八皇后问题类似,关键实现一个合法性判断函数 

isValid(x,y,c)即在x y位置放入c字符是否可行  即行不能重复  列不能重复 九宫格不能重复

dfs(index) 当遇到存在字符时跳过  空格时,填入Valid可行的字符,并跳转到下一个dfs(index+1)

当index==81即所有字符填充完毕时,是最终结果,迅速返回,不再dfs  可采取标记变量方式

 

易错点:当遇到无法继续下去时,即dfs返回时,需要改回原来填充位置为 '.'空

 bool yes=false;
    char map[9][9];//棋盘
    bool isvalid(int x,int y,char c)  //向(x,y)位置填入c是否有效
    {
        for(int i=0;i<9;i++)
        {
            if(i!=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值