- 浏览: 182729 次
- 性别:
- 来自: 济南
文章分类
最新评论
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 264Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 266You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 381Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 372Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 497Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 560Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 474Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 661Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 468The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 427Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 571Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 576Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 423All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 894Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 928Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 668Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 841Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 780You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 702For 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的小宫格...
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 - **前端**:...
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 = ...
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...
1. `isValid()`:检查给定的数字是否在当前行、列和宫格内合法。 2. `solve()`:主求解函数,使用回溯法尝试填充空单元格并递归解决。 3. `printSolution()`:打印出解的数独盘面。 在实现过程中,我们还需要考虑...
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_...
- **基本情况**:如果已经填完了整个数独(即 `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 宫格 ...
def is_valid_sudoku(grid): # 检查行、列和小九宫格内的数字是否唯一 ... ``` 同时,为了帮助用户解决数独,可以提供一个函数来检查当前填入的数字是否正确: ```python def check_solution(grid): # 检查输入...
创建一个`Sudoku`类,包含成员变量(如二维数组表示的数独盘面)和成员函数(如`isValid`用于检查数字的安全性,`solve`用于递归求解数独)。 在压缩包中的"数独"文件可能是包含了完整的C++源代码文件,可能包括...
def is_valid_solution(sudoku): # ... pass ``` 然后,我们需要编写一个函数来显示数独网格。可以使用`print`函数配合字符串格式化,或者更高级的`pprint`库来美化输出: ```python def display_sudoku(sudoku)...