zoukankan      html  css  js  c++  java
  • #leetcode刷题之路36-有效的数独

    判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
    数字 1-9 在每一行只能出现一次。
    数字 1-9 在每一列只能出现一次。
    数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

    上图是一个部分填充的有效的数独。
    数独部分空格内已填入了数字,空白格用 '.' 表示。
    示例 1:
    输入:
    [
    ["5","3",".",".","7",".",".",".","."],
    ["6",".",".","1","9","5",".",".","."],
    [".","9","8",".",".",".",".","6","."],
    ["8",".",".",".","6",".",".",".","3"],
    ["4",".",".","8",".","3",".",".","1"],
    ["7",".",".",".","2",".",".",".","6"],
    [".","6",".",".",".",".","2","8","."],
    [".",".",".","4","1","9",".",".","5"],
    [".",".",".",".","8",".",".","7","9"]
    ]
    输出: true
    示例 2:
    输入:
    [
    ["8","3",".",".","7",".",".",".","."],
    ["6",".",".","1","9","5",".",".","."],
    [".","9","8",".",".",".",".","6","."],
    ["8",".",".",".","6",".",".",".","3"],
    ["4",".",".","8",".","3",".",".","1"],
    ["7",".",".",".","2",".",".",".","6"],
    [".","6",".",".",".",".","2","8","."],
    [".",".",".","4","1","9",".",".","5"],
    [".",".",".",".","8",".",".","7","9"]
    ]
    输出: false
    解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。
    但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

    #include <iostream>
    #include <vector>
    using namespace std;
    
    
    bool isValidSudoku(vector<vector<char>>& board) {
        for(int i=0;i<9;i++)//判断行列是否有重复
        {
            int a[256]={};
            int a1[256]={};
            for(int j=0;j<9;j++)
            {
                if(board[i][j]!='.')
                    if(a[board[i][j]]==-1) return false;
                    else a[board[i][j]]=-1;
                if(board[j][i]!='.')
                    if(a1[board[j][i]]==-1) return false;
                    else a1[board[j][i]]=-1;
            }
        }
    
        for(int i=0;i<9;i+=3)//判断小的宫格
        {
            for(int j=0;j<9;j+=3)
            {
                int a[256]={};
                for(int k=i;k<i+3;k++)
                {
                    for(int h=j;h<j+3;h++)
                    {
                         if(board[k][h]!='.')
                             if(a[board[k][h]]==-1) return false;
                             else a[board[k][h]]=-1;
                    }
                }
            }
        }
        return true;
    }
    
    
    int main() {
    //    vector<vector<char>> board={{'8', '3', '.', '.', '7', '.', '.', '.', '.'},
    //                                {'6', '.', '.', '1', '9', '5', '.', '.', '.'},
    //                                {'.', '9', '8', '.', '.', '.', '.', '6', '.'},
    //                                {'8', '.', '.', '.', '6', '.', '.', '.', '3'},
    //                                {'4', '.', '.', '8', '.', '3', '.', '.', '1'},
    //                                {'7', '.', '.', '.', '2', '.', '.', '.', '6'},
    //                                {'.', '6', '.', '.', '.', '.', '2', '8', '.'},
    //                                {'.', '.', '.', '4', '1', '9', '.', '.', '5'},
    //                                {'.', '.', '.', '.', '8', '.', '.', '7', '9'}};
    //    vector<vector<char>> board={
    //            {'5', '3', '.', '.', '7', '.', '.', '.', '.'},
    //            {'6', '.', '.', '1', '9', '5', '.', '.', '.'},
    //            {'.', '9', '8', '.', '.', '.', '.', '6', '.'},
    //            {'8', '.', '.', '.', '6', '.', '.', '.', '3'},
    //            {'4', '.', '.', '8', '.', '3', '.', '.', '1'},
    //            {'7', '.', '.', '.', '2', '.', '.', '.', '6'},
    //            {'.', '6', '.', '.', '.', '.', '2', '8', '.'},
    //            {'.', '.', '.', '4', '1', '9', '.', '.', '5'},
    //            {'.', '.', '.', '.', '8', '.', '.', '7', '9'}
    //    };
        vector<vector<char>> board={{'.', '.', '.', '.', '5', '.', '.', '1', '.'},
                                    {'.', '4', '.', '3', '.', '.', '.', '.', '.'},
                                    {'.', '.', '.', '.', '.', '3', '.', '.', '1'},
                                    {'8', '.', '.', '.', '.', '.', '.', '2', '.'},
                                    {'.', '.', '2', '.', '7', '.', '.', '.', '.'},
                                    {'.', '1', '5', '.', '.', '.', '.', '.', '.'},
                                    {'.', '.', '.', '.', '.', '2', '.', '.', '.'},
                                    {'.', '2', '.', '9', '.', '.', '.', '.', '.'},
                                    {'.', '.', '4', '.', '.', '.', '.', '.', '.'}};
        bool ans=isValidSudoku(board);
        std::cout << ans << std::endl;
        return 0;
    }
  • 相关阅读:
    R语言使用RMySQL连接及读写Mysql数据库
    sparkR介绍及安装
    信息熵的计算
    django学习-管理界面、视图
    django学习-数据库操作接口API--(CRUD)
    django学习-数据库配置-创建模型
    django学习-安装、创建应用、编写视图
    接口八问 & 接口测试质量评估标准
    robotframework-post request请求携带上一个请求返回的cookie
    pipenv安装包时一直卡在Locking [packages] dependencies…,换pypi源
  • 原文地址:https://www.cnblogs.com/biat/p/10600481.html
Copyright © 2011-2022 走看看