76、有效的数独

题目描述:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

说明:

一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
给定数独序列只包含数字 1-9 和字符 ‘.’ 。
给定数独永远是 9x9 形式的。

首先这道题明显是用循环加上判断来做的,因此设计优秀的数据结构就很重要,这里我设计了一个row表示的是行中出现的数字,col表示的是列中出现的数字,boar表示的九宫格中出现的,因此这样设计后直接将数字放入到对应的格子中判断有没有即可,代码如下:

class Solution {
    public boolean isValidSudoku(char[][] board) {
    //		记录每一行中出现的数字
		boolean row[][] = new boolean[9][10];
//		记录每一列中出现的数字
		boolean col[][] = new boolean[9][10];
//		记录每一个九宫格中出现的数字
		boolean boar[][] = new boolean[9][10];
		for (int i = 0; i < 9; i++) {
			for (int j = 0; j < 9; j++) {
				if(board[i][j] != '.'){
					int x = (int)(board[i][j] - '0');
					if(row[i][x] || col[j][x] || boar[i / 3 * 3 + j / 3][x]){
						return false;
					}else {
						row[i][x] = true;
						col[j][x] = true;
						boar[i / 3 * 3 + j / 3][x] = true;
					}
				}
				
			}
		}
		return true;   
    }
}
生成一个数独游戏。 需求:使用 html,css和javascript开发一个基于网页的数独游戏,用户可以在浏览器中进行数独游戏的操作,包括填充数字、求解数独和重置游戏等功能。 功能要求: 核心功能: 数独棋盘展示: 显示一个 9x9 的数独棋盘,将棋盘划分为 9 个 3x3 的小九宫格。 初始时,部分单元格显示预定义的数字,部分单元格为空,等待用户输入。 数字输入: 用户可以点击空白单元格,弹出输入框,输入 1 - 9 的数字。 输入的数字应实时显示在单元格中。 求解功能: 用户点击 “求解” 按钮后,系统判断用户填写的结果是否正确,并将用户填写不正确的地方显示为红色。 如果数独无解,系统应弹出提示框告知用户。 用户点击“答案”按钮后,系统将正确的结果显示在数独中,并覆盖用户已经填写的内容。 重置功能: 用户点击 “重置” 按钮后,棋盘恢复到初始状态,用户之前输入的数字被清除。 界面设计要求: 布局 游戏界面应简洁美观,数独棋盘居中显示。 “求解” 、 “重置”和“答案” 按钮应位于棋盘下方,方便用户操作。 样式 棋盘单元格应具有清晰的边框,不同的小九宫格之间用较粗的边框分隔。 预定义的数字单元格和用户输入的数字单元格应有不同的背景颜色,以作区分。 按钮应具有明显的交互效果,如鼠标悬停时颜色变化。 交互设计要求: 点击反馈 用户点击单元格时,应给予视觉反馈,如单元格颜色变亮。 用户输入数字后,输入框应自动关闭。 按钮反馈 用户点击 “求解” 、 “重置” 和“答案”按钮时,按钮应出现短暂的点击效果,如颜色变深。 求解、重置和答案操作完成后,应给予相应的提示信息。 非功能要求: 性能要求 响应时间:用户点击单元格、按钮等操作后,系统应在 1 秒内做出响应。 求解时间:对于可解的数独谜题,系统应在 3 秒内完成求解并显示结果。 容错要求 输入验证:用户输入的数字应进行验证,确保输入的是 1 - 9 的有效数字。
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值