当前位置: 首页 > news >正文

每日一题——37.解数独

题目链接:37. 解数独 - 力扣(LeetCode)

代码:
 

class Solution {
public:
    bool isvalied(int i,int j,char k,vector<vector<char>>board)
    {
        //行合法
        for(int row = 0;row < board.size();row++)
        {
            if(board[row][j] == k) return false;
        }

        //列合法
        for(int col = 0;col < board[0].size();col++)
        {
            if(board[i][col] == k) return false;
        }

        //九宫格合法
        int startrow = (i/3) * 3;
        int startcol = (j/3) * 3;
        for(int row = startrow;row < startrow+3;row++)
        {
            for(int col = startcol;col < startcol+3;col++)
            {
                if(board[row][col] == k) return false;
            }
        }
        return true;
    }
    bool traversal(vector<vector<char>>& board)
    {
        for(int i = 0; i < board.size();i++)
        {
            for(int j = 0; j < board[0].size();j++)
            {
                if(board[i][j] != '.') continue;
                for(char k = '1';k <= '9';k++)
                {
                    if(isvalied(i,j,k,board)) 
                    {
                        board[i][j] = k;
                        if(traversal(board)) return true;
                        board[i][j] = '.';
                    }
                }
                return false;
            }
        }
        return true; //有必要吗
    }
    void solveSudoku(vector<vector<char>>& board) {
        traversal(board);
    }
};

回溯三部曲:

直接引用传入board ,修改board的数值

返回return bool值,判断当前路劲是否合法

这里我纠结的问题是为什么前面return false和return true的情况都有了,结尾还要再返回return true

--在所有棋盘都填满了的情况下,就不会在走到后面的路劲判断true和false的情况了,这时棋盘都满了,则是找到了合法解,在最后的部分就return true;;;;

;;;;;;

http://www.dtcms.com/a/26938.html

相关文章:

  • 23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成
  • 初步安装和使用vant组件库,使用css变量定制vant主题样式 ,小程序的API Promise化,调用promise化之API
  • Lineageos 22.1(Android 15) 开机向导制作
  • 【0407】Postgres内核 Condition variables (ConditionVariable)设计机制 ①
  • HDLBits ——> Building Larger Circuits
  • Windows桌面系统管理5:Windows 10操作系统注册表
  • ubuntu源码方式安装TensorRT-LLM推理框架(超详细)
  • 亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!
  • idea连接gitee(使用idea远程兼容gitee)
  • Redis7——基础篇(五)
  • Docker 部署 ollama + DeepSeek
  • buildctl配置镜像加速
  • ES6中Object.defineProperty 的详细用法和使用场景以及例子
  • 在 C++23 中使用智能指针进行现代内存管理 – 第 1 部分
  • MyBatisPlus学习
  • 【llm post-training】从Loss Function设计上看LLM SFT和RL的区别和联系
  • 【练习】【二分】力扣热题100 35. 搜索插入位置]
  • Markdown 常用语法及示例
  • CSS中块级格式化上下文(BFC)详解
  • 【c语言初阶】函数递归
  • 玩机日记 12 在PVE Windows11上部署本地AI模型,使用群晖反代https转发到外网提供服务,配合沉浸式翻译插件翻译网页
  • 复现论文:DPStyler: Dynamic PromptStyler for Source-Free Domain Generalization
  • 蓝桥杯 Java B 组 之堆的基础(优先队列实现 Top K 问题)
  • 链表_反转链表
  • 矿用机车移动逆变电源设计(论文+源码)
  • 机器学习实战(8):降维技术——主成分分析(PCA)
  • 深入浅出:0 - 1 背包问题的滚动数组解法
  • 延迟任务的11种实现方式(下)!!
  • 机器学习实战(7):聚类算法——发现数据中的隐藏模式
  • 【C++八股】野指针和悬空指针