- 浏览: 184832 次
- 性别:
- 来自: 济南
文章分类
最新评论
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.
检测一个数独是否有效,数独的规则大家不明白的可以去百度一下。这里我们只需要检查当前的状态是否有效,而不用找到一个解。所以我们只要检查每行,每列以及没九个小方格内是否都没有重复数字出现就可以了。代码如下:
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; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 270Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 271You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 389Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 379Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 503Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 568Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 483Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 668Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 473The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 434Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 584Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 590Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 429All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 905Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 934Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 606Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 691Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 857Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 789You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 723For a undirected graph with tre ...
相关推荐
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"(用于验证填入的数字是否合法)等。 在实际的数独求解算法...
在C++编程中,为了提高代码的可读性和复用性,可以将这些功能封装成类的方法,如`init_grid()`用于初始化数独网格,`read_input()`用于读取数独数据,`is_valid()`用于验证数独合法性,以及`solve_sudoku()`用于执行...
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 # ...
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的标准数独及对角线数独解题算法。数独是一种逻辑游戏,玩家需要在9x9的网格中填入数字,使得每一行、每一列以及每一个宫(3x3的小方格)内的数字都从1到9不...
在代码中,可能会有一个`main`函数,它读取`sudoku_inputs`目录下的数独测试用例(可能是CSV或文本格式),然后调用`solve_sudoku`函数来解决这些数独,并在解决过程中记录每一步,最后打印出完整的解决方案。...
在MATLAB中开发数独(Sudoku)是一个有趣且具有挑战性的编程项目,它涉及到算法设计、逻辑推理以及矩阵操作等多个方面。数独是一种逻辑游戏,玩家需要在9x9的网格中填入数字,使得每一行、每一列以及9个3x3的小宫格...
### 数独游戏开发知识点详解 #### 一、项目概述与技术选型 - **目标**:构建一个在线数独游戏,使用户能够通过Web界面体验数独的乐趣。 - **技术栈**: - **后端**:Python + Django - **前端**:...
1. `isValid()`:检查给定的数字是否在当前行、列和宫格内合法。 2. `solve()`:主求解函数,使用回溯法尝试填充空单元格并递归解决。 3. `printSolution()`:打印出解的数独盘面。 在实现过程中,我们还需要考虑...
- **基本情况**:如果已经填完了整个数独(即 `n` 达到了81),则记录解决方案并将当前的 `pu` 数组复制到 `sudoku` 和 `store` 中。 - **递归步骤**:对于每个空位,尝试填入1至9之间的数字,如果填入的数字合法,...
2. **基础函数**:创建`is_valid`函数检查一行、一列和一宫是否符合数独规则;`print_sudoku`函数用于打印数独盘面。 3. **回溯法**:这是最常用的数独求解算法,从第一个空格开始,尝试填充1-9的每个数字,如果...
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 宫格 ...
创建一个`Sudoku`类,包含成员变量(如二维数组表示的数独盘面)和成员函数(如`isValid`用于检查数字的安全性,`solve`用于递归求解数独)。 在压缩包中的"数独"文件可能是包含了完整的C++源代码文件,可能包括...
def is_valid_solution(sudoku): # ... pass ``` 然后,我们需要编写一个函数来显示数独网格。可以使用`print`函数配合字符串格式化,或者更高级的`pprint`库来美化输出: ```python def display_sudoku(sudoku)...
接着,调用`print_board`函数打印初始数独,然后调用`solve_sudoku`函数尝试解决数独。如果找到解决方案,再次打印解决后的数独;如果没有解,则输出"无解"。 综上所述,这个Python程序提供了一个完整的数独游戏...
int sudoku[9][9]; ``` 接下来,我们需要实现一个函数来检查一个数独状态是否有效。这包括检查行、列和小宫格的合法性: ```cpp bool isValid(const int board[9][9], int row, int col, int num) { // 检查行 ...
- 可能还有 `print_sudoku()` 函数:用于输出数独盘面,便于用户查看解算过程。 理解并分析这段代码,可以帮助我们深入学习递归算法以及如何将其应用到实际问题中,同时也能提升C语言编程技巧。通过实践和调试这个...
function isValid(sudoku) { // 检查行、列和小宫格 for (let row = 0; row ; row++) { if (!isValidRowCol(sudoku, row, 9)) return false; if (!isValidRowCol(sudoku, row, 1)) return false; } for (let ...
数独是一种广受欢迎的逻辑推理游戏,它基于9x9的格子,分为9个3x3的小九宫格。每个小九宫格内,玩家需要填入数字1到9,使得每一行、每一列以及每一个小九宫格内的数字都不重复。数独求解器则是利用计算机算法来自动...