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. 解数独相关推荐

  1. 递归生成数独java_[leetcode] 37. 解数独(Java)(dfs,递归,回溯)

    1A 这个题其实15分钟左右就敲出来并且对了...但是由于我输错了一个数..导致我白白debug一个多小时.. 没啥难度,练递归-dfs的好题 class Solution { private int ...

  2. Java实现 LeetCode 37 解数独

    37. 解数独 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实 ...

  3. LeetCode—37. 解数独(困难)

    37. 解数独(困难) 题目描述: 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 ...

  4. leetcode 37. 解数独 思考分析

    目录 题目 核心思路的不断细化 1.核心框架 2.考虑到每个位置的工作 3.考虑到到达最后一列.该位置的数已经预置的情况 4.判断是否符合规则的函数 5.确定递归终止条件+确定函数返回值 AC代码 题 ...

  5. LeetCode 37. 解数独

    一.题目描述 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...

  6. LeetCode 37. 解数独 Sudoku Solver

    编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x3 ...

  7. LeetCode 37 解数独

    题目描述 编写一个程序,通过填充空格来解决数独问题.一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x ...

  8. Leetcode算法Java全解答--37. 解数独

    Leetcode算法Java全解答–37. 解数独 文章目录 Leetcode算法Java全解答--37. 解数独 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 编写一个 ...

  9. 代码随想录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.正 ...

最新文章

  1. Python数组合并
  2. 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
  3. 成功解决ValueError: If using all scalar values, you must pass an index
  4. 文件头_常见文件文件头
  5. TCP滑动窗口和拥塞控制机制
  6. java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果
  7. html 新浪博客,html
  8. 基础知识(十二)Opengl回顾记录
  9. 点积和叉积和凸包背诵用模板
  10. Hadoop-2.7.3-本地模式安装-wordcount例子
  11. python读取视频占用内存太大_Python 读取大文件内存占用检测示例
  12. 309. 最佳买卖股票时机含冷冻期
  13. BZOJ 1677. [Usaco2005 Jan]Sumsets 求和
  14. linux 多线程服务端编程 pdf,Linux 多线程服务端编程.pdf
  15. java.lang.reflect.Field常用方法
  16. MOT 指标汇总 (详讲 说明 含义 )
  17. Unity网格系统(1)网格生成
  18. java 增加内存_如何增加java虚拟机可以使用的最大内存
  19. Java语音技术之FreeTTS
  20. python小括号( )、中括号[ ]和大括号也叫做花括号{ } 区别

热门文章

  1. curl -L get.rvm.io | bash -s stable报错:连接不上服务器
  2. Delphi控件的“拿来主义”
  3. poj 2096 , zoj 3329 , hdu 4035 —— 期望DP
  4. url编码函数encodeURI和encodeURIComponent
  5. Python简单的抓取静态网页内容
  6. 13.强符号和弱符号
  7. jq-实战之表格筛选
  8. 对Java注解(Annotation)初步的认识
  9. 《大话设计模式》读书笔记-建造者模式
  10. wireshark抓包工具的使用及分析