判断9X9数组是否是数独的java代码
闲来无事,理了一下数独的判断逻辑,用java实现,代码如下
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
/**************************************
使1-9每个数字在每一行、每一列和每一宫中都只出现一次
**************************************/
public class SuDoKu
{
//日志记录器
private static Logger logger =Logger.getLogger("SuDoKu");
static{
try{
//方法返回日志文件存放的路径
FileHandler fh = new FileHandler("D:/adrian/sudoku.log",true);
fh.setFormatter(new SimpleFormatter());
//fh.setEncoding("UTF-8");
logger.addHandler(fh);
logger.setLevel(Level.ALL);
}catch(Exception e){
logger.log(Level.WARNING,"------日志初始化异常------\r\n",e);
}
}
private static void display(int a[][]){
for(int i=0;i<9;i++){
String temp="";
for(int j=0;j<9;j++){
temp+="\t"+a[i][j];
}
logger.info(temp);
}
}
/**
* 判断数组是否合法
*/
public static boolean isLegal(int a[][]){
//判断横向、纵向
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
for(int k=j+1;k<9;k++){
//判断横向是否符合要求
if(a[i][j]!=0&&a[i][k]==a[i][j])
return false;
//判断纵向是否符合要求
if(a[j][i]!=0&&a[k][i]==a[j][i])
return false;
}
}
}
//判断九宫
int flag=0;
while(flag<6){
for(int i=0+flag;i<3+flag;i++){
for(int j=0+flag;j<3+flag;j++){
for(int k=i+1;k<3+flag;k++){
for(int l=j+1;l<3+flag;l++)
if(a[i][j]!=0&&
a[i][j]==a[i][l]&&
a[i][j]==a[k][j]&&
a[i][j]==a[k][l])
return false;
}
}
}
flag=flag+3;
}
return true;
}
//测试
public static void main(String[] args){
int [][] a={
{9,8,5,7,6,2,1,3,4},
{2,6,7,1,3,4,5,8,9},
{3,1,4,8,9,5,7,6,2},
{8,3,2,9,7,6,4,5,1},
{1,7,6,4,5,3,2,9,8},
{5,4,9,2,1,8,6,7,3},
{6,2,1,3,8,7,9,4,5},
{4,5,3,6,2,9,8,1,7},
{7,9,8,5,4,1,3,2,6}
};
boolean flag=isLegal(a);
if(flag){
logger.info("\t\t\t\t以下数组是数独");
display(a);
}else{
logger.info("\t\t\t\t以下数组不是数独");
display(a);
}
}
}
判断9X9数组是否是数独的java代码的更多相关文章
- java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...
- 剑指offer-第四章解决面试题思路(判断一个数组是否为二叉搜索树的后序遍历序列)
二叉搜索树:二叉搜索树根节点的左边都比根节点小,右边都比根节点大. 例题:输入一个数组,判断是否为二叉搜索树的后序遍历序列,如果是,返回true,如果不是,返回flase,假设没有重复的元素. 思路: ...
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...
- delphi 判断一个数组的长度用 Length 还是 SizeOf ?
判断一个数组的长度用 Length 还是 SizeOf ?最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适! 如果是一维数组.且元素大小是 ...
- js如何判断一个数组
typeof [] 为一个"object" 不能通过此方法判断一个数组 方法 1.instanceof方法,这个方法用的比较多. 2.这个是es5以后推荐的方法,Object.pr ...
- paip.判断文件是否存在uapi python php java c#
paip.判断文件是否存在uapi python php java c# ==========uapi file_exists exists() 面向对象风格: File.Exists 作者: 老哇 ...
- 如何判断一个GPS点是否在以另一个GPS点为圆心100米为半径的圆内(Java代码)
题目乍一看,无从下手,仔细想了一下,原来只需要判断两个GPS点的直线距离是否<100米即可. Java代码如下: /** * 将两个经纬度坐标转化成距离(米) * * @param 2个GPS经 ...
- 判断php数组维度的小例子
分享一例判断php数组维度的代码,供大家参考. 如下所示: <?php /** * 返回数组的维度 * @param [type] $arr [description] * @return [t ...
- [改善Java代码]动态加载不适合数组
上一个建议解释了为什么要使用forName,本建议就说说哪些地方不适合使用动态加载. 如果forName要加载一个类,那它必须是一个类------8中基本类型就排除在外.它们不是一个具体的类. 其次它 ...
随机推荐
- JVM简记
1.JVM概述 JVM(Java virtual Machine)指以软件的方式模拟具有完整硬件系统功能.运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现. JVM是一种规范,实现产品常 ...
- Vue管理系统前端系列一vue-cli4.x 初始化项目
目录 项目介绍 技术基础 开发环境 安装工具 快速原型开发 创建项目 配置相关说明 目录结构 项目介绍 lion-ui 是一个基于 RBAC 的管理系统前端项目,采用 vue 和 element-ui ...
- 初学Linux (Linux_note)
根目录:/ /root: 存放root用户相关文件 /home: 存放不同用户的相关文件 /bin: 存放常用命令的目录 /sbin: 要具有一定权限才可以使用的命令 /mnt: 默认挂载光驱和软驱的 ...
- .Net MongoDB批量修改集合中子集合的字段
环境:.Net Core 3.1 (需要导入.Net MongoDB的驱动) 模型 /// <summary> /// 收藏 /// </summary> public cla ...
- mysql数据库中数据类型的长度
在mysql中新建数据表的时候会有长度一说,其实用建表语句建数据表的时候也有涉及 例如: CREATE TABLE user( uid int(4), name varchar(255), passw ...
- 神奇的BUG系列-01
有时候遇见一个bug,感觉就是他了 其实他也不过是你职业生涯中写的千千万万个bug中的一员 你所要做的,是放下 日子还长,bug很多,不差这一个 就此别过,分手快乐 一辈子那么长,一天没放下键盘 你就 ...
- 面试【JAVA基础】类加载机制
1.类加载过程 1.1.加载 查找和导入class文件. 1.2.链接 验证 检验载入的class文件的正确性,完整性. 准备 给类的静态变量分配存储空间,会赋对象类型的默认值. 解析 将class常 ...
- js判断一个字符串中出现次数最多的字符及次数
最近面试总是刷到这个题,然后第一次的话思路很乱,这个是我个人思路 for循环里两个 if 判断还可以优化 var maxLength = 0; var maxStr = ''; var count = ...
- 实验 2:Mininet 实验——拓扑的命令脚本生成
实验 2:Mininet 实验--拓扑的命令脚本生成 一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二.实验任务 通过使用命令行创建.Python 脚本 ...
- Java中nextInt和nextLine同时使用出现的问题
代码: package com.ins1; import java.util.*; public class test { public static void main(String[] args) ...