JAVA代码—算法基础:数独问题(Sodoku Puzzles)

JAVA代码—算法基础:数独问题(Sodoku Puzzles)

数独问题(Sodoku Puzzles)

数独游戏(日语:数独 すうどく)是一种源自18世纪末的瑞士的游戏,后在美国发展、并在日本得以发扬光大的数学智力拼图游戏。
拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。 数独的玩法逻辑简单,数字排列方式千变万化。不少教育者认为数独是锻炼脑筋的好方法。

基本术语

单元格和值

一个数独谜题通常包含有9x9=81个单元格,每个单元格仅能填写一个值。对一个未完成的数独题,有些单元格中已经填入了值,另外的单元格则为空,等待解题者来完成。

行和列

习惯上,横为行,纵为列,在这里也不例外。行由横向的9个单元格组成,而列由纵向的9个单元格组成。很明显,整个谜题由9行和9列组成。

例如:一行的情况

这里写图片描述

例如:一列的情况

这里写图片描述

例如:一个完整的方形

这里写图片描述

接下来看问题:

原问题链接:https://leetcode.com/problems/valid-sudoku/description/

问题描述:判断一个数独游戏是否合法。数独当前可以是部分填充,未填充部分用’.’代替。
有效地数独并不是指该游戏是否有解,而仅仅判断当前填充是否有效。

这里写图片描述

问题分析

判断数独是否有效,对于当前填充的数字,可以依次检查:

  1. 对于大九宫格来说,每一行,每一列不能有重复的数字。如果有重复的数字,就不是数独。
  2. 对于每个小九宫格来说,不能有重复的数字。如果有重复的数字,就不是数独。

算法设计

0 => 0, 1 => 3, 2 => 6
3 => 0, 4 => 3, 5 => 6
6 => 0, 7 => 3, 8 => 6

x = (i % 3) * 3

0 => 0, 1 => 0, 2 => 0
3 => 3, 4 => 3, 5 => 3
6 => 6, 7 => 6, 8 => 6

y = i / 3 * 3

public class Solution {public boolean isValidSudoku(char[][] board) {for(int i = 0; i < 9; i++) {if(!isValid(board, i, i, 0, 8) || !isValid(board, 0, 8, i, i) || !isValid(board, i / 3 * 3, i / 3 * 3 + 2, i % 3 * 3, i % 3 * 3 + 2)) return false;         }return true;  }public boolean isValid(char[][] board, int xStart, int xEnd, int yStart, int yEnd) {HashSet<Integer> set = new HashSet<Integer>();for(int x = xStart; x <= xEnd; x++) {for(int y = yStart; y <= yEnd; y++) {if(board[x][y] != '.' && !set.add(board[x][y] - '0')) return false;}}return true;}
}

(完)原文地址http://www.bieryun.com/2479.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统恢复

实验目的&#xff1a;熟悉了前面的启动流程&#xff0c;系统的一个大致的启动流程是怎样的&#xff0c;而其中牵扯到了些许文件&#xff0c;这些文件在系统启动时用于衔接各个步骤&#xff0c;如果这些文件损坏或缺失&#xff0c;系统将不能正常启动&#xff0c;这次写的内容就…

PerfView专题 (第二篇):如何寻找 C# 中的 Heap堆内存泄漏

一&#xff1a;背景 上一篇我们聊到了如何去找 热点函数&#xff0c;这一篇我们来看下当你的程序出现了 非托管内存泄漏 时如何去寻找可疑的代码源头&#xff0c;其实思路很简单&#xff0c;就是在 HeapAlloc 或者 VirtualAlloc 时做 Hook 拦截&#xff0c;记录它的调用栈以及分…

关于 extern C的说明

在用C的项目源码中&#xff0c;经常会不可避免的会看到下面的代码 1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 5 /*...*/ 6 7 #ifdef __cplusplus 8 } 9 #endif 它到底有什么用呢&#xff0c;你知道吗&#xff1f;而且这样的问题经常会出现在面试or笔试…

Nginx 面试 40 问

Nginx是一款轻量级的Web服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛应用。 那么关于 Nginx 的核心技术点有哪些呢&#xff1f; 什么是Nginx&#xff1f; Nginx是一个 轻量级/高性能的…

用Cocos2dx开发棋牌游戏的观点解析

众所周知&#xff0c;目前棋牌游戏特别的火。很多游戏公司都想在这一块赚钱&#xff0c;可是却不知用什么软件比较好的去开发棋牌游戏&#xff0c;对此&#xff0c;我列出了两款比较靠谱的软件去开发棋牌游戏&#xff0c;希望对大家有帮助&#xff01; 第一款软件是cocos2dx,它…

我把《系统设计》系列整理成了 PDF

大家好&#xff0c;我是等天黑。相信很多朋友应该注意到了&#xff0c;我最近发了很多系统设计的文章。是的&#xff0c;到目前为止&#xff0c;已经发了有 7 篇文章。这些内容主要翻译自 Alex Xu 的 《System Design Interview》&#xff0c;有卷一和卷二两本。System Design …

高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型&#xff0c;常见的IO模型有四种&#xff1a; &#xff08;1&#xff09;同步阻塞IO&#xff08;Blocking IO&#xff09;&#xff1a;即传统的IO模型。 &#xff08;2&#xff09;同步非阻塞IO&#xff08;Non-blocking IO&#xff09;…

PHP个人博客项目------切切歆语博客

2019独角兽企业重金招聘Python工程师标准>>> phpmysqlapache, ThinkPHP3.2框架开发 我的个人博客项目 适合新手练习 源码地址下载&#xff1a;https://github.com/DickyQie/php-myblog 转载于:https://my.oschina.net/zhangqie/blog/1785867

IOS_SearchBar搜索栏及关键字高亮

搜索框的效果演示: 这个就是所谓的搜索框了,那么接下来我们看看如何使用代码来实现这个功能. 我所使用的数据是英雄联盟的英雄名单,是一个JSON数据的txt文件, JSON数据的处理代码如下所示: ?123456//获取文件的路径pathNSString *path [[NSBundle mainBundle] pathForResourc…

Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式

工厂模式&#xff1a; 工厂模式可以分为三类&#xff1a; 1&#xff09;简单工厂模式&#xff08;Simple Factory&#xff09; 2&#xff09;工厂方法模式&#xff08;Factory Method&#xff09; 3&#xff09;抽象工厂模式&#xff08;Abstract Factory&#xff09; 简单工…

今天很多 CTO 都是被干掉的,因为他没有成就业务

作者&#xff5c;乔新亮 编辑&#xff5c;邓艳琴 我可以丝毫不开玩笑地说&#xff0c;今天&#xff0c;很多传统企业里的研发都只是“工人”&#xff0c;哪怕是 CTO&#xff0c;充其量也只是“高级工人”&#xff0c;如果不转换思维去成就业务&#xff0c;就只能停留在工人级…

中航工业集团金网络(北京)电子商务有限公司副总经理刘正珩:航空“智”造的供应链支撑平台...

编者按 “十三五”时期是我国贸易发展的重要战略机遇期&#xff0c;物流产业发展迅速&#xff0c;智慧供应链已经成为推动流通大国向流通强国过程中的重要行动。6月2日&#xff0c;由上海市国有资产监督管理委员会、上海市邮政管理局、上海市商务委员会指导&#xff0c;上海市国…

创建、检查和反编译世界上(几乎)最短的 C# 程序

创建、检查和反编译世界上&#xff08;几乎&#xff09;最短的 C# 程序原文来自https://www.stevejgordon.co.uk/creating-inspecting-decompiling-the-worlds-smallest-csharp-program在这篇文章中&#xff0c;我认为创建世界上&#xff08;几乎&#xff09;最短的 C# 程序然后…

Linux下画原理图和PCB

Linux下画原理图和PCBWindows下大名鼎鼎的Allegro和经典的Protel 99SE都是不支持Linux操作系统的。做Linux驱动开发免不了要看一下原理图和PCB。一般的做法有三种&#xff1a; 1.主机使用Windows系统&#xff0c;将Linux装在VMWARE之类的虚拟机中这样能够使用Windows下的软件看…

配置中心 App Configuration (二):Feature Flag 功能开关特性

写在前面Web服务开发过程中我们经常有这样的需求&#xff1a;某些功能我必须我修改了配置才启用&#xff0c;比如新用户注册送券等&#xff1b;某个功能需到特定的时间才启用&#xff0c;过后就失效&#xff0c;比如春节活动等&#xff1b;某些功能&#xff0c;我想先对10%的用…

联想(Lenovo)小新310经典版进bios方法

1&#xff0c;找到novo按钮。 2&#xff0c;在关机的状态下桶一下小孔&#xff0c;不用任何操作&#xff0c;电脑进入bios选择界面。转载于:https://www.cnblogs.com/senior-engineer/p/6761457.html

C#中的匿名类型

这节来讲一下C#中的匿名类型。匿名类在C#中&#xff0c;我们可以不去显示的声明一个类&#xff0c;而是通过匿名类去临时声明一个类结构去帮助我们去完成一些功能。声明一个匿名类&#xff0c;我们可以像下面这样做&#xff1a;var Anonymousnew {name"charles",year…

MySQL之MHA高可用集群

目录 一、MHA概述 1.1.MHA 是什么 1.2.MHA 的组成 1.3.MHA 的特点 二、MHA搭建准备 2.1.实验思路 三、MHA搭建 3.1配置主从复制 3.2.安装 MHA 软件 3.3.故障模拟 3.4.故障修复 四、总结 一、MHA概述 1.1.MHA 是什么 1.MHA&#xff08;MasterHigh Availability&…

配置中心 App Configuration (一):轻松集成到Asp.Net Core

写在前面在日常开发中&#xff0c;我这边比较熟悉的配置中心有&#xff0c;携程Apollo&#xff0c;阿里Nacos(配置中心&#xff0c;服务治理一体)之前文章&#xff1a;Asp.Net Core与携程阿波罗(Apollo)的第一次亲密接触总体来说&#xff0c;Apollo和Nacos社区都比较活跃&#…

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good

目录 前言现象源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用常用HandlerMethodArgumentResolver介绍常用HandlerMethodReturnValueHandler介绍本文开头现象…