您的位置:首页 > 其它

LeetCode题解:Valid Sudoku

2013-10-26 15:43 543 查看

Valid Sudoku

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.
思路:
遍历整个棋盘,记录每一行,每一列,每一块用过的数字。一旦发现一个数字在行,列,块上有重复则报错。
题解:

// ⑨者,笨蛋也
#define BAKA 9

class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
array<bool, BAKA> row[BAKA];
array<bool, BAKA> col[BAKA];
array<bool, BAKA> box[BAKA];

// as standard C array
// the variables are not initialized...
for(auto r = 0; r < BAKA; ++r)
for(auto c = 0; c < BAKA; ++c)
row[r][c] = col[r][c] = box[r][c] = false;

for(auto r = 0; r < BAKA; ++r)
for(auto c = 0; c < BAKA; ++c)
{
char ch=board[r][c];
if (ch == '.')
continue;   // blank, no effect

ch -= '1';

if (row[r][ch])
return false;
row[r][ch] = true;

if (col[c][ch])
return false;
col[c][ch] = true;

if (box[r / 3 * 3 + c / 3][ch])
return false;
box[r / 3 * 3 + c / 3][ch] = true;
}

return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: