Valid Sudoku
来源:互联网 发布:红米清空用户数据99 编辑:程序博客网 时间:2024/04/28 01:10
主要分为三步:行检测,列检测,以及小区域检测
/** * Created by jason on 13-12-16. */public class ValidSudoku { public boolean isValidSudoku(char[][] board) { return isvalidRow(board) && isvalidColumn(board) && isvalidRegieon(board); } public boolean isvalidRow(char[][] board) { int[] count = new int[9]; for (int i = 0; i < board.length; i++) { memset(count, 0); for (int j = 0; j < board[0].length; j++) { if (!add(board[i][j], count)) return false; } } return true; } public boolean isvalidColumn(char[][] board) { int[] count = new int[9]; for (int i = 0; i < board.length; i++) { memset(count, 0); for (int j = 0; j < board[0].length; j++) { if (!add(board[j][i], count)) return false; } } return true; } public boolean isvalidRegieon(char[][] board) { int increment = (int) Math.sqrt(board.length); int[] count = new int[9]; for (int k = 0; k < board.length; k++) { memset(count, 0); int ii = k / 3 * 3; int jj = k % 3 * 3; for (int i = ii; i < ii + increment; i++) { for (int j = jj; j < jj + increment; j++) { if (!add(board[i][j], count)) return false; } } } return true; } public boolean add(char c, int[] count) { if (c == '.') return true; else return ++count[c - '1'] <= 1; } public void memset(int[] count, int v) { for (int i = 0; i < count.length; i++) { count[i] = v; } }}
0 0
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- oc学习之旅:NSArray分割,排序,Block
- C#连接Sqlite
- JNI学习积累之三 - 操作JNI函数以及复杂对象传递
- jQuery.post()函数
- mongoDB非正常关闭后无法启动问题
- Valid Sudoku
- dpkg
- 正则表达式语法
- Web移动应用调试工具——Weinre
- java线性表实现
- C++界面库大全2013
- JSON介绍
- 動態鏈接庫的使用-dlopen dlsym dlclose dlerror
- java栈和队列实现