标签:
题目描述:public class Solution {
public bool IsValidSudoku(char[,] board)
{
var row = 9;
var col = 9;
// check each row
for(var i = 0;i < row;i ++){
var flag = new bool[9];;
for(var j = 0;j < col; j++){
var b = Check(board, i, j, ref flag);
if(!b){
return false;
}
}
}
// check each column
for(var i = 0;i < col;i ++){
var flag = new bool[9];;
for(var j = 0;j < row; j++){
var b = Check(board, j, i, ref flag);
if(!b){
return false;
}
}
}
// check each 3*3
for(var i = 0;i < 7; i += 3){
for(var j = 0;j < 7; j += 3){
if(!Check_3_3(board, i, j)){
return false;
}
}
}
return true;
}
private bool Check_3_3(char[,] board, int i , int j)
{
var flag = new bool[9];
for(var r = i; r < i + 3; r++){
for(var c = j; c < j + 3; c++){
var b = Check(board, r, c, ref flag);
if(!b){
return false;
}
}
}
return true;
}
private bool Check(char[,] board, int i, int j, ref bool[] flag)
{
//Console.WriteLine(i +","+j);
if(board[i,j] != ‘.‘){
if(flag[N(board[i,j])]){
return false;
}
flag[N(board[i,j])] = true;
}
return true;
}
private int N(char c)
{
return c - ‘1‘;
}
}标签:
原文地址:http://blog.csdn.net/lan_liang/article/details/50144377