Problem : 解决数独问题,给出一个二维数组,将这个数独进行求解。
 
思路:
  1. 嵌套循环,三层循环体,每一行,每一列,填入从1到9的数字。判断填入之后是否合理
  2. 判断数独是否合理的函数
 
参考代码: 
 
package leetcode_50;

/***
*
* @author pengfei_zheng
* 求解数独问题
*/
public class Solution37 {
public static void solveSudoku(char[][] board) {
if(board==null ||board.length ==0)
return;
else
solve(board);
} private static boolean solve(char[][] board) {
for(int i = 0 ; i < 9;i++){
for(int j = 0 ; j < 9;j++){
if(board[i][j]=='.'){
for(char c = '1'; c<='9';c++){
if(isValid(board,i,j,c)){
board[i][j]=c;
if(solve(board))
return true;
else
board[i][j]='.';
}
}
return false;
}
}
}
return true;
} private static boolean isValid(char[][] board, int row, int column, char c) {
for(int i = 0 ; i < 9; i ++){
if(board[row][i]==c) return false;
if(board[i][column]==c) return false;
if(board[3 * (row / 3) + i / 3][ 3 * (column / 3) + i % 3] != '.' &&
board[3 * (row / 3) + i / 3][3 * (column / 3) + i % 3] == c) return false; //check 3*3 block
}
return true;
}
public static void main(String[]args){
long start = System.currentTimeMillis();
char[][] board={{'8','.','.','.','.','.','.','.','.'},
{'.','.','3','6','.','.','.','.','.'},
{'.','7','.','.','9','.','2','.','.'},
{'.','5','.','.','.','7','.','.','.'},
{'.','.','.','.','4','.','7','.','.'},
{'.','.','.','1','.','5','.','3','.'},
{'.','.','1','.','.','.','.','6','8'},
{'.','.','8','5','.','.','.','1','.'},
{'.','9','.','.','.','.','4','.','.'}
};
solveSudoku(board);
long end = System.currentTimeMillis();
for(int i = 0 ; i < 9 ; i ++){
for(int j = 0 ; j < 9 ;j ++){
System.out.print(board[i][j]+" ");
}
System.out.println();
}
System.out.println("耗时: "+ (double)(end-start)/1000+" s");
}
}

LeetCode 37 Sudoku Solver(求解数独)的更多相关文章

  1. [LeetCode] 37. Sudoku Solver 求解数独

    Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy  ...

  2. [leetcode]37. Sudoku Solver 解数独

    Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy  ...

  3. leetcode 37. Sudoku Solver 36. Valid Sudoku 数独问题

    三星机试也考了类似的题目,只不过是要针对给出的数独修改其中三个错误数字,总过10个测试用例只过了3个与世界500强无缘了 36. Valid Sudoku Determine if a Sudoku ...

  4. [LeetCode] Sudoku Solver 求解数独

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

  5. Java [leetcode 37]Sudoku Solver

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

  6. [leetcode 37]sudoku solver

    1 题目: 根据给出的数独,全部填出来 2 思路: 为了做出来,我自己人工做了一遍题目给的数独.思路是看要填的数字横.竖.子是否已经有1-9的数字,有就剔除一个,最后剩下一个的话,就填上.一遍一遍的循 ...

  7. leetcode 37 Sudoku Solver java

    求数独,只要求做出一个答案就可以. 刚开始对题意理解错误,以为答案是唯一的, 所以做了很久并没有做出来,发现答案不唯一之后,使用回溯.(还是借鉴了一下别人) public class Solution ...

  8. [Leetcode][Python]37: Sudoku Solver

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 37: Sudoku Solverhttps://oj.leetcode.co ...

  9. LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)

    Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku bo ...

随机推荐

  1. Intellij 2016非服务器激活

    下载 http://idea.lanyus.com/jar/JetbrainsCrack-2.6.2.jar 并将 JetbrainsCrack-2.6.0.jar 放置到 D盘根目录(也可以根据自己 ...

  2. php 一维数组去重

    $input = array("a" => "green", "red", "b" => "gre ...

  3. 在Android平台下搭建PhoneGap开发环境--用HTML5开发游戏

    一.在Android平台下搭建PhoneGap开发环境具体怎么搭建我这里就不详细说了,如有需要我后面再讲 . PhoneGap 官方地址有详细说明:http://www.phonegap.com. 在 ...

  4. Thinkphp5笔记八:路由别名Route

    主要作用:隐藏自己的真实路由名称 application/Route.php 使用方法一: <?php use think\Route; Route::alias('home','index/i ...

  5. flask with gae开发小结

    最近因为要重写之前发布在GAE上的一个博客,又回顾了一下python,同时,因为用的flask,gae等等,一道写一些小总结,供日后查阅. 1, slugify 其实这个问题可以不考虑,只要你愿意用中 ...

  6. 1. BeeGo 介绍与项目的创建,启动

    简介 BeeGo是一个快速开发Go而应用的HTTP框架,他可以用来快速开发API,web以及后端服务等各种应用,是一个restful 的框架,主要涉及灵感来源于tornado,sinatr和flask ...

  7. activeMq的helloword

    http://blog.csdn.net/clj198606061111/article/details/38236679 点对点的同步消息模型 http://blog.csdn.net/jiuqiy ...

  8. MongoDB 连接池

    http://www.cnblogs.com/huangfox/archive/2012/04/01/2428947.html http://www.iteye.com/problems/97350

  9. linux alias使用

    安装一些软件 python redis mysql jdk,都需要添加环境变量,一个路径添加到了环境变量,就可以直接在linux控制台输入  xx命令. 否则不添加环境变量,使用xx就会提示找不到命令 ...

  10. 数据库iops的理解

    想购买阿里云的RDS mysql,想请教下最大连接数是请求数吗?如下图,600最大可支持连接数,那一个页面查询30次,20个人同时请求,数据库不就超载了么?(内存2400MB,专用数据服务器,只能支持 ...