您的位置:首页 > 其它

LeetCode-36-Valid Sudoku(模拟/遍历)-Easy

2016-01-02 18:06 465 查看
1. 题意理解:

判断9宫格的填充内容是否符合9宫格游戏规则。

2. 题目分析:

1)模拟游戏规则,判断横、竖、以及9个子格的内容是否符合规范;

2)遍历所有的情况;

3. 解题代码:

class Solution {
private:
bool isValid(vector<char> &v){
sort(v.begin(), v.end());
for(int i=1; i<9; i++){
if(v[i]==v[i-1] && v[i]!='.'){
cout<<"v[i]= "<<v[i]<<endl;
cout<<"v[i-1]= "<<v[i-1]<<endl;
return false;
}
}

return true;
}
public:
bool isValidSudoku(vector<vector<char>>& board) {
//cout<<board[0][0]<<board[0][1]<<board[0][2]<<board[0][3]<<board[0][4]<<endl;
for(int i=0; i<9; i++){
vector<char> t(board[i]);
if(!isValid(t)){
cout<<"horizontal false"<<endl;
return false;
}
}

for(int i=0; i<9; i++){
vector<char> t;
for(int j=0; j<9; j++){
t.push_back(board[j][i]);
//cout<<board[j][i]<<" "<<endl;
}

if(!isValid(t)){
cout<<"vetical false"<<endl;
return false;
}
}

//
for(int m=0; m<3; m++){
for(int n=0; n<3; n++){
vector<char> t;
for(int x=0; x<3; x++){
for(int y=0; y<3; y++){
t.push_back(board[m*3+x][n*3+y]);
//cout<<board[m*3+n][n*3+x];
}
}

if(!isValid(t)){
cout<<"block false"<<endl;
return false;
}
}

cout<<endl;
}

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