Leetcode每日一题:37.sudoku-solver(解数独)
得用到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(解数独)相关推荐
- leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)
36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ 题解 class Solution {public boolean isVal ...
- Leetcode每日一题:36.valid-sudoku(有效的数独)
踏踏实实一个个元素来 bool isValidSudoku(vector<vector<char>> &board) {for (int i = 0; i < 9 ...
- 【DFS + backtrack】LeetCode 37. Sudoku Solver
LeetCode 37. Sudoku Solver Solution1: 转载自花花酱:http://zxi.mytechroad.com/blog/searching/leetcode-37-su ...
- LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述
LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...
- leetcode每日一题·买卖股票问题(Python)
leetcode每日一题·买卖股票问题(Python) 买卖股票的最佳时机(股票最大利润) 题目链接 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的 ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
最新文章
- Linux使用logrotate来切割日志文件
- Spring Cloud Netflix—如何加入Hystrix
- Xftp连接到Linux服务器时提示连接失败的配置
- ansible-playbook 手工编译安装nginx
- Windows平台真实时毫秒级4K H264/H265直播技术方案探讨
- sql 转置_SQL 如何实现动态的行列转置
- QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore
- GitHub 一周热点速览:手撕 LeetCode 一日 Star 破两千
- Android中多次点击开发者模式的实现
- 转载:ITRS/GCRS/J2000坐标系的相互转换
- 运维分级发布_运维必备制度:故障分级和处罚规范
- python复合赋值语句语法_复合结构的赋值语句理解
- 443端口被攻击怎么办
- 电脑网络wifi图标消失,图标变成灰色的解决办法之一
- 数据索引是什么?索引作用是什么?什么样的字段适合建索引?索引的优缺点是什么?
- Opencv+ZBar识别条形码、二维码
- 什么是IP Core?
- 系统辨识实例(2)——利用BP神经网络进行基本非线性函数辨识
- 域适应(DA)---域泛化(DG)
- H5兄弟连web前端