2019独角兽企业重金招聘Python工程师标准>>>

Write a program to solve a Sudoku puzzle by filling the empty cells.

Empty cells are indicated by the character'.'.

You may assume that there will be only one unique solution.

A sudoku puzzle...

...and its solution numbers marked in red.

https://oj.leetcode.com/problems/sudoku-solver/

思路:类似于N-Queens的回溯方案,对于每个空格,依次填入每个数字,如果合法,继续下去,直至填满。

注意:此时isValid只需比较当前填入的值所在区域的合法性!

/*** http://blog.csdn.net/zxzxy1988/article/details/8586289* http://blog.csdn.net/linhuanmars/article/details/20748761* @author Dong Jiang**/
public class Solution {public void solveSudoku(char[][] board) {solve(board);}public boolean solve(char[][] board) {for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (board[i][j] == '.') {for (int k = 1; k <= 9; k++) {board[i][j] = (char) ('0' + k);if (isValid(board, i, j) && solve(board))return true;board[i][j] = '.';}return false;}}}return true;}private boolean isValid(char[][] board, int x, int y) {int i, j;for (i = 0; i < 9; i++)if (i != x && board[i][y] == board[x][y])return false;for (j = 0; j < 9; j++)if (j != y && board[x][j] == board[x][y])return false;for (i = 3 * (x / 3); i < 3 * (x / 3 + 1); i++)for (j = 3 * (y / 3); j < 3 * (y / 3 + 1); j++)if (i != x && j != y && board[i][j] == board[x][y])return false;return true;}public static void main(String[] args) {char[][] board = { { '5', '3', '.', '.', '7', '.', '.', '.', '.' },{ '6', '.', '.', '1', '9', '5', '.', '.', '.' }, { '.', '9', '8', '.', '.', '.', '.', '6', '.' },{ '8', '.', '.', '.', '6', '.', '.', '.', '3' }, { '4', '.', '.', '8', '.', '3', '.', '.', '1' },{ '7', '.', '.', '.', '2', '.', '.', '.', '6' }, { '.', '6', '.', '.', '.', '.', '2', '8', '.' },{ '.', '.', '.', '4', '1', '9', '.', '.', '5' }, { '.', '.', '.', '.', '8', '.', '.', '7', '9' } };new Solution().solveSudoku(board);}
}

参考

http://blog.csdn.net/linhuanmars/article/details/20748761

http://blog.csdn.net/zxzxy1988/article/details/8586289

转载于:https://my.oschina.net/jdflyfly/blog/284228

[leetcode] Sudoku Solver相关推荐

  1. LeetCode Sudoku Solver

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

  2. LeetCode:Sudoku Solver Valid Sudouku

    其实数独还是我挺喜欢的一个游戏.原来有本数独的书. 其实Sudoku是基于Valid Sudouku.其实一开始有点想太多.基于平常玩数独的经验,有很多解数独的规则.貌似这个人为判断因素比较多. 而且 ...

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

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

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

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

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

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

  6. LeetCode 37. 解数独 Sudoku Solver

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

  7. C语言使用递归算法实现Sudoku Solver算法(附完整源码)

    使用递归算法实现Sudoku Solve sudoku 结构体定义 实现以下接口 C语言使用递归算法实现Sudoku Solve算法完整源码(定义,实现,main函数测试) sudoku 结构体定义 ...

  8. leetcode Sudoku java

    package com.sogou.hadoop.test;public class Sudoku { /**验证该值是否合法*/public boolean isValidSudoku(char[] ...

  9. 37. Sudoku Solver **

    description: 数独 Note: Example: Example 1:Input: [["5","3",".",".& ...

  10. 37. Sudoku Solver

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

最新文章

  1. 6.mybatis异常:SQL Mapper Configuration,Error parsing Mapper XML,Could not resolve type alias
  2. FAX modem和传真协议简介
  3. 【小米笔试题】实现一个算法,确定一个字符串的所有字符是否全部不同
  4. TCP协议面试灵魂10问 | 强势整理
  5. js中的generator
  6. 硬件:LCD和LED相关知识介绍
  7. jzoj4742-单峰【数学,数论】
  8. Unity 通过Unity Admob Plugin插件集成admob教程
  9. 【记录贴】cs231n课程作业一遇到问题总结
  10. 中国邮政支付宝卡通开通流程
  11. [7]2019-ICDM-Learning to Sample:an Active Learning Framework 论文笔记
  12. Mac中必不可少的软件——Tuxera NTFS
  13. 文本分类之一:语言模型
  14. 局域网中简单的dhcp服务器的配置
  15. C# 访问MongoDB 通用方法类
  16. css 适配mac 字体,CSS:仅在mac上使用字体
  17. 没有高学历和工作经验的应届毕业生在IT行业是不是寸步难行?
  18. vue、 echarts、iview 实现大数据可视化大屏模板
  19. keepalived实现服务高可用
  20. Openwrt PPTP ALG功能

热门文章

  1. jenkins 构建异常_Jenkins多环境持续集成架构实践!
  2. c语言工程作业,西工大c语言程序作业
  3. java zip_Java压缩技术(二) ZIP压缩——Java原生实现
  4. 虚拟主机隐藏index.html,Nginx如何隐藏index.html
  5. linux纯没网安装mysql_实用性Linux安装mysql
  6. python: 正则表达式2--元字符与re模块
  7. mkdir命令的-p和-m
  8. 一分钟了解阿里云产品:绿网
  9. python获取当前路径的方法
  10. 关于SimpleDateFormat的一些使用及性能数据