[leetcode]36. Valid Sudoku c语言
2016-04-03 12:04
323 查看
题目
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character ‘.’.
![](http://img.blog.csdn.net/20160403120210224)
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
题意很简单,判断一个数独是否合法,而不是求解这个数独。那么只需要判断每行每列每个小九宫是否有重复的数字即可
runtime:4ms
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character ‘.’.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
题意很简单,判断一个数独是否合法,而不是求解这个数独。那么只需要判断每行每列每个小九宫是否有重复的数字即可
#define boardToNum(x, y) (board[x][y] - '0') bool isValidSudoku(char** board, int boardRowSize, int boardColSize) { int conflict[9] = {0}; int i = 0, j = 0, k = 0; /* 每行判断是否有冲突 */ for(i = 0; i < boardRowSize; i++) { memset(conflict, 0x0, sizeof(conflict)); for(j = 0; j < boardColSize; j++) { if(board[i][j] != '.') { if(1 == conflict[boardToNum(i,j) - 1]) return false; else conflict[boardToNum(i,j) - 1] = 1; } } } /* 每列判断是否有冲突 */ for(j = 0; j < boardColSize; j++) { memset(conflict, 0x0, sizeof(conflict)); for(i = 0; i < boardRowSize; i++) { if(board[i][j] != '.') { if(1 == conflict[boardToNum(i,j) - 1]) return false; else conflict[boardToNum(i,j) - 1] = 1; } } } /* 每个小九宫判断是否有冲突 */ for(k = 0 ; k < 9; k++) { memset(conflict, 0x0, sizeof(conflict)); for(i = k/3*3; i < k/3*3+3; i++) { for(j = k%3*3; j < k%3*3 + 3; j++) { if(board[i][j] != '.') { if(1 == conflict[boardToNum(i,j) - 1]) return false; else conflict[boardToNum(i,j) - 1] = 1; } } } } return true; }
runtime:4ms
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法