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

来源:互联网 发布:成就最高的女演员知乎 编辑:程序博客网 时间:2024/06/06 00:12

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;    }};


0 0
原创粉丝点击