`

Valid Sudoku 数独

阅读更多
Determine if a Sudoku is valid. The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

A partially filled sudoku which is valid.

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

检测一个数独是否有效,数独的规则大家不明白的可以去百度一下。这里我们只需要检查当前的状态是否有效,而不用找到一个解。所以我们只要检查每行,每列以及没九个小方格内是否都没有重复数字出现就可以了。代码如下:
public class Solution {
    public boolean isValidSudoku(char[][] board) {
        HashSet<Character> set = new HashSet<Character>();
        for(int i = 0; i < board.length; i++) {
            for(int j = 0; j < board[0].length; j++) {
                if(set.contains(board[i][j])) 
                    return false;
                else if(board[i][j] != '.')
                    set.add(board[i][j]);
            }
            set.clear();
        }
        
        for(int i = 0; i < board[0].length; i++) {
            for(int j = 0; j < board.length; j++) {
                if(set.contains(board[j][i]))
                    return false;
                else if(board[j][i] != '.')
                    set.add(board[j][i]);
            }
            set.clear();
        }
        
        for(int m = 0; m < 3; m++) {
            for(int n = 0; n < 3; n++) {
                for(int i = 3 * m; i < 3 * m + 3; i++) {
                    for(int j = 3 * n; j < 3 * n + 3; j++) {
                        if(set.contains(board[i][j]))
                            return false;
                        else if(board[i][j] != '.')
                            set.add(board[i][j]);
                    }
                }
                set.clear();
            }
        }
        return true;
    }
}
0
2
分享到:
评论

相关推荐

    Sudoku solver in C++ (数独计算器)

    A Sudoku solver implemented in C++. It can solve a given Sudoku problem, or count the possibilities for all valid Sudoku grids.

    数独求解算法

    在这个情况下,它可能声明了一个数独类(如"Sudoku"),其中包含私有成员变量来存储数独盘面,以及公有成员函数,如"solve"(用于求解数独)、"is_valid"(用于验证填入的数字是否合法)等。 在实际的数独求解算法...

    Sudoku:数独方法

    在C++编程中,为了提高代码的可读性和复用性,可以将这些功能封装成类的方法,如`init_grid()`用于初始化数独网格,`read_input()`用于读取数独数据,`is_valid()`用于验证数独合法性,以及`solve_sudoku()`用于执行...

    9x9数独算法

    def is_valid(sudoku, row, col, num): # 检查行是否合法 for i in range(9): if sudoku[row][i] == num: return False # 检查列是否合法 for i in range(9): if sudoku[i][col] == num: return False # ...

    Sudoku:使用python pygame的数独游戏

    if num.isdigit() and int(num) in range(1, 10) and is_valid(sudoku, row, col, int(num)): sudoku[row][col] = int(num) draw_sudoku(sudoku) pygame.display.update() ``` 为了增加游戏的可玩性,我们需要...

    用Java实现N*N的标准数独及对角线数独解题

    在本文中,我们将深入探讨如何使用Java编程语言来实现N*N的标准数独及对角线数独解题算法。数独是一种逻辑游戏,玩家需要在9x9的网格中填入数字,使得每一行、每一列以及每一个宫(3x3的小方格)内的数字都从1到9不...

    Python求解数独并输出求解过程

    在代码中,可能会有一个`main`函数,它读取`sudoku_inputs`目录下的数独测试用例(可能是CSV或文本格式),然后调用`solve_sudoku`函数来解决这些数独,并在解决过程中记录每一步,最后打印出完整的解决方案。...

    matlab开发-Sudoku

    在MATLAB中开发数独(Sudoku)是一个有趣且具有挑战性的编程项目,它涉及到算法设计、逻辑推理以及矩阵操作等多个方面。数独是一种逻辑游戏,玩家需要在9x9的网格中填入数字,使得每一行、每一列以及9个3x3的小宫格...

    生成数独游戏的python程序 (49).zip

    def is_valid(sudoku, row, col, num): # 检查行 for i in range(9): if sudoku[row][i] == num: return False # 检查列 for i in range(9): if sudoku[i][col] == num: return False # 检查3x3宫格 box...

    数独游戏生成数独谜题生成数独谜题

    ### 数独游戏开发知识点详解 #### 一、项目概述与技术选型 - **目标**:构建一个在线数独游戏,使用户能够通过Web界面体验数独的乐趣。 - **技术栈**: - **后端**:Python + Django - **前端**:...

    生成数独游戏的python程序fuzz (35).zip

    def is_valid(sudoku, row, col, num): # 检查行、列和宫格是否已经存在该数字 for i in range(9): if sudoku[row][i] == num or sudoku[i][col] == num: return False box_row = (row // 3) * 3 box_col = ...

    生成数独游戏的python程序fuzz (18).zip

    def is_valid(sudoku, row, col, num): # 检查行、列和小宫格 for i in range(9): if sudoku[row][i] == num or sudoku[i][col] == num: return False box_row = (row // 3) * 3 + i // 3 box_col = (col // 3...

    数独求解java算法附源码

    1. `isValid()`:检查给定的数字是否在当前行、列和宫格内合法。 2. `solve()`:主求解函数,使用回溯法尝试填充空单元格并递归解决。 3. `printSolution()`:打印出解的数独盘面。 在实现过程中,我们还需要考虑...

    生成数独游戏的python程序 (45).zip

    def is_valid(sudoku, row, col, num): # 检查行 for i in range(9): if sudoku[row][i] == num: return False # 检查列 for i in range(9): if sudoku[i][col] == num: return False # 检查3x3宫格 box_...

    C# 数独解题算法 简单明了

    - **基本情况**:如果已经填完了整个数独(即 `n` 达到了81),则记录解决方案并将当前的 `pu` 数组复制到 `sudoku` 和 `store` 中。 - **递归步骤**:对于每个空位,尝试填入1至9之间的数字,如果填入的数字合法,...

    数独人工解法的一些技巧及其python实现

    2. **基础函数**:创建`is_valid`函数检查一行、一列和一宫是否符合数独规则;`print_sudoku`函数用于打印数独盘面。 3. **回溯法**:这是最常用的数独求解算法,从第一个空格开始,尝试填充1-9的每个数字,如果...

    Python数独游戏.docx

    def is_valid(sudoku, row, col, num): # 检查行 for x in range(9): if sudoku[row][x] == num: return False # 检查列 for x in range(9): if sudoku[x][col] == num: return False # 检查 3x3 宫格 ...

    生成数独游戏的python程序

    def is_valid_sudoku(grid): # 检查行、列和小九宫格内的数字是否唯一 ... ``` 同时,为了帮助用户解决数独,可以提供一个函数来检查当前填入的数字是否正确: ```python def check_solution(grid): # 检查输入...

    C++数独程序

    创建一个`Sudoku`类,包含成员变量(如二维数组表示的数独盘面)和成员函数(如`isValid`用于检查数字的安全性,`solve`用于递归求解数独)。 在压缩包中的"数独"文件可能是包含了完整的C++源代码文件,可能包括...

    数独小游戏-Python实现

    def is_valid_solution(sudoku): # ... pass ``` 然后,我们需要编写一个函数来显示数独网格。可以使用`print`函数配合字符串格式化,或者更高级的`pprint`库来美化输出: ```python def display_sudoku(sudoku)...

Global site tag (gtag.js) - Google Analytics