LeetCode 37. Sudoku Solver

Solution1:
转载自花花酱:http://zxi.mytechroad.com/blog/searching/leetcode-37-sudoku-solver/
与之前的DFS套路题不大一样,注意!

class Solution {
public:void solveSudoku(vector<vector<char>>& board) {rows_ = vector<vector<int>>(9, vector<int>(10));cols_ = vector<vector<int>>(9, vector<int>(10));boxes_ = vector<vector<int>>(9, vector<int>(10));//预先设置剪枝条件for(int i = 0; i < 9; i++)for(int j = 0; j < 9; j++) {const char c = board[i][j];                if ( c != '.') {int n = c - '0';                    int bx = i / 3;int by = j / 3;rows_[i][n] = 1;cols_[j][n] = 1;boxes_[bx * 3 + by][n] = 1;}}fill(board, 0, 0);}private:vector<vector<int>> rows_, cols_, boxes_;bool fill(vector<vector<char>>& board, int x, int y) {if (x == 9)return true;int ny = (y + 1) % 9;int nx = (ny == 0) ? x + 1 : x;if (board[x][y] != '.') return fill(board, nx, ny);for (int i = 1; i <= 9; i++) {int bx = x / 3;int by = y / 3;int box_key = bx * 3 + by;if (!rows_[x][i] && !cols_[y][i] && !boxes_[box_key][i]) {rows_[x][i] = 1;cols_[y][i] = 1;boxes_[box_key][i] = 1;board[x][y] = i + '0';if (fill(board, nx, ny)) return true;board[x][y] = '.';boxes_[box_key][i] = 0;cols_[y][i] = 0;rows_[x][i] = 0;}}return false;}
};

【DFS + backtrack】LeetCode 37. Sudoku Solver相关推荐

  1. 【DFS + backtrack】LeetCode 93. Restore IP Addresses

    LeetCode 93. Restore IP Addresses Solution1:我的答案 怎么就这么慢... class Solution { public:vector<string& ...

  2. leetcode:面试题 08.12. 八皇后【dfs + backtrack】

    分析 定义一个函数生成当前queens的结果 然后queens用来记录每行的queen分别在什么位置 backtrack用来记录当前第i行的queen的位置在哪 如果当前i = n就可以加入最终的结果 ...

  3. 【DFS + Backtracking】LeetCode 79. Word Search

    LeetCode 79. Word Search Solution1:我的答案 DFS + Backtracking class Solution { public:bool exist(vector ...

  4. 【DFS + Backtracking】LeetCode 212. Word Search II

    LeetCode 212. Word Search II Solution1:我的答案 暴力搜索..基于第79题的答案,真的是非常之慢啊!!! 快的方法均是基于字典树的方法,真是复杂.. class ...

  5. 【DFS + backtracking】LeetCode 216. Combination Sum III

    Solution1:我的答案 DFS+backtracking,时间复杂度O(2m)=O(29)O(2m)=O(29)O(2^m)=O(2^9),空间复杂度O(k)O(k)O(k) class Sol ...

  6. [LeetCode 37] Sudoku Solver回溯解法

    原题: Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by ...

  7. leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)

    36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ 题解 class Solution {public boolean isVal ...

  8. 【算法面试】leetcode最常见的150道前端面试题 --- 中等题

    点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 兄弟姐妹们,中等题来了,本篇17道,剩下63道,每周更新10道! 之前简单题的链接如下: [算法面试]leetcode最常见 ...

  9. 20天拿下华为OD笔试之【DFS/BFS】2023Q1A-开心消消乐【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解

    [DFS/BFS]2023Q1A-开心消消乐 题目描述与示例 题目描述 给定一个 N 行 M 列的二维矩阵,矩阵中每个位置的数字取值为 0 或 1,矩阵示例如: 1 1 0 0 0 0 0 1 0 0 ...

最新文章

  1. Android Rect 的使用以及与RectF的区别
  2. 例5.12 输入一串字符,字符个数不超过100,且以.结束。 (信息学奥赛一本通)...
  3. 写一个简单的爬虫 - 如何模拟登录网站
  4. 第五周作业:瀑布模型
  5. 偷窥Selenium4 0带有网芯的相对定位器3 1
  6. 用Java实现并查集
  7. python身份证号判断_Python实现身份证号码解析
  8. SOLD2算法之3: 特征点与heatmap结合检测有效线段(CVPR 2021)
  9. 批量自定义裁剪多张图片,可以按固定像素值或比例批量裁剪图片
  10. python输入逗号_python中 逗号的 用法
  11. 盘点4种常用的推荐算法
  12. MySQL基础学习(三)————SQL语句的常用操作
  13. cad快速选择命令快捷键_CAD快捷键命令:倒角的使用技巧
  14. 基于中国剩余定理的秘密共享方案(miracl)
  15. Excel导入SqlServer2012提示“消息7314”
  16. Javaweb核心响应对象
  17. 第九届蓝桥杯 螺旋折线
  18. 解决bat批处理输出乱码的问题
  19. 莱斯大学计算机专业好不好,莱斯大学怎么样 莱斯大学优势专业
  20. 如何高效开发app?

热门文章

  1. 数据结构上机实践第八周项目9-广义表算法库及应用
  2. Java常用数据类和方法
  3. 主机连接wifi,如何设置虚拟机上网方式
  4. xp计算机重启记录,XP电脑关机后自动重启的解决方法
  5. java自动封箱_java自动封箱是什么意思
  6. python下列数据中不属于字符串的是_下列数据中,不属于字符串的是( )。 (6.0分)_学小易找答案...
  7. js return 闭包为null_那么如何让你的 JS 写得更漂亮?
  8. influxdb tsm文件_Influxdb中TSM文件结构解析之读写TSM
  9. Python数据结构与算法(附录)——块状链表的动态调整
  10. ubuntu安装redis_在Ubuntu上安装Redis