LintCode 802. 数独(回溯)/ LeetCode 37. 解数独
1. 题目
编写一个程序,通过填充空单元来解决数独难题。
空单元由数字0表示。
你可以认为只有一个唯一的解决方案。
LeetCode 37 题类似,把 int 改成 char,注意转换
2. 解题
- 行、列、小9宫格内 1-9 都只出现一次
- 暴力回溯,坐标转换
class Solution {vector<vector<int>> ans;
public:void solveSudoku(vector<vector<int>> &b) {dfs(b,0);b = ans;}void dfs(vector<vector<int>> &b, int idx){if(idx > 80){ans = b;return;}int i = idx/9, j = idx%9;//idx是序号,转换成行列标号if(b[i][j] != 0)dfs(b,idx+1);//数字是已给的,跳过else{for(int k = 1; k <= 9; ++k){ //遍历9个数字if(isok(b,i,j,k)){ //数字 k 在当前格子合法b[i][j] = k;dfs(b,idx+1);b[i][j] = 0;}}}}bool isok(vector<vector<int>> &b, int i, int j, int& num){ int box_i, box_j;box_i = i/3, box_j = j/3;//行列坐标算出小9宫格的坐标for(int k = 0; k < 9; ++k){ //遍历9个格子,行的,列的,9 宫格内的,都不能出现过 numif(b[i][k]==num || b[k][j]==num || b[box_i*3+k/3][box_j*3+k%3]==num)return false;}return true;}
};
100% 数据通过测试
总耗时 273 ms
您的提交打败了 55.71% 的提交!
LintCode 802. 数独(回溯)/ LeetCode 37. 解数独相关推荐
- 递归生成数独java_[leetcode] 37. 解数独(Java)(dfs,递归,回溯)
1A 这个题其实15分钟左右就敲出来并且对了...但是由于我输错了一个数..导致我白白debug一个多小时.. 没啥难度,练递归-dfs的好题 class Solution { private int ...
- Java实现 LeetCode 37 解数独
37. 解数独 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实 ...
- LeetCode—37. 解数独(困难)
37. 解数独(困难) 题目描述: 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 ...
- leetcode 37. 解数独 思考分析
目录 题目 核心思路的不断细化 1.核心框架 2.考虑到每个位置的工作 3.考虑到到达最后一列.该位置的数已经预置的情况 4.判断是否符合规则的函数 5.确定递归终止条件+确定函数返回值 AC代码 题 ...
- LeetCode 37. 解数独
一.题目描述 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- LeetCode 37. 解数独 Sudoku Solver
编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x3 ...
- LeetCode 37 解数独
题目描述 编写一个程序,通过填充空格来解决数独问题.一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x ...
- Leetcode算法Java全解答--37. 解数独
Leetcode算法Java全解答–37. 解数独 文章目录 Leetcode算法Java全解答--37. 解数独 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 编写一个 ...
- 代码随想录30——回溯:332重新安排行程、51N皇后、37解数独
文章目录 1.332重新安排行程 1.1.题目 1.2.解答 1.2.1.思路 1.2.2.代码 2.51N皇后 2.1.题目 2.2.解答 3.37解数独 3.1.题目 3.2.解答 3.2.1.正 ...
最新文章
- Python数组合并
- 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
- 成功解决ValueError: If using all scalar values, you must pass an index
- 文件头_常见文件文件头
- TCP滑动窗口和拥塞控制机制
- java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果
- html 新浪博客,html
- 基础知识(十二)Opengl回顾记录
- 点积和叉积和凸包背诵用模板
- Hadoop-2.7.3-本地模式安装-wordcount例子
- python读取视频占用内存太大_Python 读取大文件内存占用检测示例
- 309. 最佳买卖股票时机含冷冻期
- BZOJ 1677. [Usaco2005 Jan]Sumsets 求和
- linux 多线程服务端编程 pdf,Linux 多线程服务端编程.pdf
- java.lang.reflect.Field常用方法
- MOT 指标汇总 (详讲 说明 含义 )
- Unity网格系统(1)网格生成
- java 增加内存_如何增加java虚拟机可以使用的最大内存
- Java语音技术之FreeTTS
- python小括号( )、中括号[ ]和大括号也叫做花括号{ } 区别