[LeetCode]Sudoku Solver
来源:互联网 发布:windows 定时重启任务 编辑:程序博客网 时间:2024/06/07 05:36
题目描述
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.
求解数独。解题思路
用回溯法我们只要检查新加入的值能否在行、列以及小方块里有效即可。
代码
public static void solveSudoku(char[][] board) {internalSolveSudoku(board);}/** * 回溯求解数独问题 * * @param board * @return */public static boolean internalSolveSudoku(char[][] board) {for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {if (board[i][j] == '.') {for (int k = 1; k <= 9; k++) {board[i][j] = (char) ('0' + k);if (isValid(board, i, j)) {// 递归if (internalSolveSudoku(board)) {return true;}}// 回溯board[i][j] = '.';}return false;}}}return true;}/** * 判断一个数字在当前位置是否合法 * * @param board * @param row * @param column * @return */public static boolean isValid(char[][] board, int row, int column) {int cellStartX = (row / 3) * 3;int cellStartY = (column / 3) * 3;char c = board[row][column];for (int i = 0; i < board.length; i++) {if (i != row && board[i][column] == c) {return false;}}for (int i = 0; i < board[0].length; i++) {if (i != column && board[row][i] == c) {return false;}}for (int i = cellStartX; i < cellStartX + 3; i++) {for (int j = cellStartY; j < cellStartY + 3; j++) {if (i != row && j != column && board[i][j] == c)return false;}}return true;}
0 0
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- Leetcode 37 Sudoku Solver
- [Leetcode] Sudoku Solver
- Leetcode 37: Sudoku solver
- LeetCode Sudoku Solver
- [LeetCode]Sudoku Solver
- Leetcode Sudoku Solver
- LeetCode-Sudoku Solver
- LeetCode - Sudoku Solver
- LeetCode:Sudoku Solver
- 【leetcode】Sudoku Solver
- Leetcode: Sudoku Solver
- leetcode Sudoku Solver
- LeetCode | Sudoku Solver
- LeetCode Sudoku Solver
- [Leetcode] Sudoku Solver (Java)
- SAP BW顾问
- CDC::SetBrushOrg设置画刷的原点用来干什么?
- Android 自定义ViewGroup手把手教你实现ArcMenu
- 暑假第一天 7月6日
- HDOJ-2234(迭代DFS)
- [LeetCode]Sudoku Solver
- 北大ACM试题分类(转)
- 第十二章、Tiny4412 U-BOOT移植十二 DDR3初始化顺序
- POJ 3104&&POJ 2976 继续二分搜索。。。
- 联盟营销,统计每天IP数量的sql
- 数据结构学习之栈的两种实现方式
- 浙江专业偏头痛医院
- actioncolumn vs MVC
- Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程)