得用到DFS,一条路走到黑;
做这道题得时候一直在想 如何在line / 9 == 1的时候直接返回呢 开始准备用goto 后来改变主意设一个flag就行了

bool flag = false;
bool check(vector<vector<char>> &vec, int line, int col, char value) //检查这个值能不能被放入
{for (int i = 0; i < 9; i++){if (vec[line][i] == value || vec[i][col] == value){return false;}}int x = line / 3 * 3, y = col / 3 * 3;for (int i = 0; i <= 2; i++)//判断是否在它所在的九宫格重复{for (int j = 0; j <= 2; j++){if (vec[x + i][y + j] == value)return false;}}return true;
}
void dfs(vector<vector<char>> &vec, int line, int col)
{//boundary conditionif (line / 9 == 1) //每行每列都弄完了{flag = true;return;}if (vec[line][col] == '.') //如果这是入口{for (int k = 1; k <= 9; k++) //k从1到9挨个尝试{if (check(vec, line, col, k + '0')) //如果K可以放进去{vec[line][col] = k + '0';dfs(vec, line + (col + 1) / 9, (col + 1) % 9); //下一位置进行dfs}}if (!flag)vec[line][col] = '.'; //回溯}else{dfs(vec, line + (col + 1) / 9, (col + 1) % 9);}
}
void solveSudoku(vector<vector<char>> &board)
{dfs(board, 0, 0);
}

Leetcode每日一题:37.sudoku-solver(解数独)相关推荐

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

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

  2. Leetcode每日一题:36.valid-sudoku(有效的数独)

    踏踏实实一个个元素来 bool isValidSudoku(vector<vector<char>> &board) {for (int i = 0; i < 9 ...

  3. 【DFS + backtrack】LeetCode 37. Sudoku Solver

    LeetCode 37. Sudoku Solver Solution1: 转载自花花酱:http://zxi.mytechroad.com/blog/searching/leetcode-37-su ...

  4. LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述

    LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...

  5. leetcode每日一题·买卖股票问题(Python)

    leetcode每日一题·买卖股票问题(Python) 买卖股票的最佳时机(股票最大利润) 题目链接 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的 ...

  6. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  7. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  8. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  9. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

最新文章

  1. Linux使用logrotate来切割日志文件
  2. Spring Cloud Netflix—如何加入Hystrix
  3. Xftp连接到Linux服务器时提示连接失败的配置
  4. ansible-playbook 手工编译安装nginx
  5. Windows平台真实时毫秒级4K H264/H265直播技术方案探讨
  6. sql 转置_SQL 如何实现动态的行列转置
  7. QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore
  8. GitHub 一周热点速览:手撕 LeetCode 一日 Star 破两千
  9. Android中多次点击开发者模式的实现
  10. 转载:ITRS/GCRS/J2000坐标系的相互转换
  11. 运维分级发布_运维必备制度:故障分级和处罚规范
  12. python复合赋值语句语法_复合结构的赋值语句理解
  13. 443端口被攻击怎么办
  14. 电脑网络wifi图标消失,图标变成灰色的解决办法之一
  15. 数据索引是什么?索引作用是什么?什么样的字段适合建索引?索引的优缺点是什么?
  16. Opencv+ZBar识别条形码、二维码
  17. 什么是IP Core?
  18. 系统辨识实例(2)——利用BP神经网络进行基本非线性函数辨识
  19. 域适应(DA)---域泛化(DG)
  20. H5兄弟连web前端

热门文章

  1. 【剑指Offer】18树的子结构
  2. eclipse-注释
  3. 04-----赋值运算符
  4. C++反汇编第一讲,认识构造函数,析构函数,以及成员函数
  5. Swift - 键盘弹出样式
  6. node.js第十课(HTTPserver)
  7. EL表达式(Exprission language)
  8. AWK 之 RS、ORS与FS、OFS
  9. iOS tableView刷新
  10. Men and women can't be 'just friends