###数独
方法一:
设定三个方法;分别为行不重复,列不重复,单元格不重复;在判断是否重复的时候用了一个Boolean数组,默认值为false,若角标位置为true时那么说明已经重复了

需求:判断是否为数独矩阵/* 思路:当每行元素不得重复,并且每列元素不得重复,并且每个小方阵也不得重复*/public static void main(String[] args) {// TODO Auto-generated method stubint grid[][]={{5,3,4,6,7,8,9,1,2},{6,7,2,1,9,5,3,4,8},{1,9,8,3,4,2,5,6,7},{8,5,9,7,6,1,4,2,3},{4,2,6,8,5,3,7,9,1},{7,1,3,9,2,4,8,5,6},{9,6,1,5,3,7,2,8,4},{2,8,7,4,1,9,6,3,5},{3,4,5,2,8,6,1,7,9}};if(IsAllrow(grid)&&IsAllcol(grid)&&IsAllcell(grid)){System.out.println("是 数独");}else{System.out.println("不是数独");}}private static boolean IsAllcell(int[][] grid) {// TODO Auto-generated method stub//找基点for(int i=0;i<9;i+=3){for(int j=0;j<9;j+=3){//找偏移量,小矩阵boolean cell[]=new boolean[9];for(int x=0;x<3;x++){for(int y=0;y<3;y++){if(cell[grid[x+i][y+j]-1]==false){cell[grid[x+i][y+j]-1]=true;}else{return false;}}}}}return true;}private static boolean IsAllcol(int[][] grid) {// TODO Auto-generated method stubfor(int i=0;i<grid.length;i++){boolean row[]=new boolean[9];for(int j=0;j<grid[i].length;j++){if(row[grid[j][i]-1]==false){row[grid[j][i]-1]=true;}else{return false;}}}return true;}private static boolean IsAllrow(int[][] grid) {// TODO Auto-generated method stubfor(int i=0;i<grid.length;i++){boolean row[]=new boolean[9];for(int j=0;j<grid[i].length;j++){if(row[grid[i][j]-1]==false){row[grid[i][j]-1]=true;}else{return false;}}}return true;}
}

方法二:
依然是判断行不能重复列不能重复,这个用的方法是,分为以下几个情况:
一个大情况为grid里的数字不能超过1-9;基于大情况的前提
我们拿出一行,看这一行里有没有和某一个数字相同,那就是行不变列编,并且去除自己本身你这列,比的是这行的其他列;
我们再拿出一列,看这一列里有没有和这个数字相同的,那就是列不变行变,并且去除自己本身你这行,比的是这列的其他行;
我们再拿出一个单元格,看这个单元格里有没有和这个数字相同的,并且去除本身的行列,比的是剩余单元格的元素。


public class Demo_test3_1 {public static void main(String[] args) {// TODO Auto-generated method stubint grid[][]={{5,3,4,6,7,8,9,1,2},{6,7,2,1,9,5,3,4,8},{1,9,8,3,4,2,5,6,7},{8,5,9,7,6,1,4,2,3},{4,2,6,8,5,3,7,9,1},{7,1,3,9,2,4,8,5,6},{9,6,1,5,3,7,2,8,4},{2,8,7,4,1,9,6,3,5},{3,4,5,2,8,6,1,7,9}};System.out.println(Isvalid(grid)?"Valid solution":"Not valid solution");}private static boolean Isvalid(int[][] grid) {// TODO Auto-generated method stubfor (int  i= 0; i < grid.length; i++) {for (int j = 0; j < grid[i].length; j++) {if(grid[i][j]<1||grid[i][j]>9) {return false;}}}return true;}public static boolean Isvalid(int [][]grid,int i,int j) {for(int colume=0;colume<9;colume++) {if(colume!=j&&grid[i][colume]==grid[i][j]) {//i行中的元素,与grid[i][j]这个元素比有重复的return false;}}for(int row=0;row<9;row++) {if(row!=i&&grid[i][j]==grid[row][j]) {return false;}}for(int row=(i/3)*3;row<9;row++) {for(int col=(j/3)*3;col<9;col++) {if(row!=i&&col!=j&&grid[i][j]==grid[row][col]) {return false;}}}return true;  }
}

数独游戏的两种编程思路+代码相关推荐

  1. 分布式与人工智能课程(part7)--两种绘图思路

    学习笔记,仅供参考,有错必纠 文章目录 两种绘图思路 函数式绘图 对象式绘图 对象式子图 方式1: ax=plt.subpolt(121) 方式2: ax=fig.add_sub(121) 方式3: ...

  2. [WebAssembly 入门] 实现数独游戏 - 如何优雅的组织Rust代码

    title: [WebAssembly 入门] 实现数独游戏 - 如何优雅的组织Rust代码 date: 2018-4-23 22:55:00 categories: WebAssembly, 笔记 ...

  3. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。

    java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...

  4. python支持的编程方式包括,python的两种编程方式是什么

    一.交互式编程 什么是交互式编程,就是在命令行中输入python 命令即可启动交互式编程,提示窗口如下: 而且还用了Python3的print方法打印出一串字符串. 二.脚本式编程 通过脚本参数调用解 ...

  5. Unity3D动作类游戏中两种相机抖动

    Unity3D动作类游戏中两种相机抖动 在动作类RPG游戏中,为了体现角色的技能和增加动作打击感,我们常常会给相机添加抖动效果来配合特效做一些技能效果. 我在网上搜了一下,然后结合自己的项目总结一下, ...

  6. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  7. ML之分类预测:分类预测评估指标之AUC计算的的两种函数具体代码案例实现

    ML之分类预测:分类预测评估指标之AUC计算的的两种函数具体代码案例实现 目录 分类预测评估指标之AUC计算的的两种函数代码案例实现 输出结果 实现代码

  8. html广告框,给WordPress首页添加简单广告框弹窗两种方法实现代码+插件

    最近大家访问我的博客想必都看到了图片广告弹窗 话说虽然用户不喜欢,但是作为站长的我们却非常需要,毕竟我们也不是用爱发电,也是需要赚点打广告赚点外快来补贴服务器费用的.今天逛夏末浅笑博客的时候看到了这个 ...

  9. WIN10专业版安装docker不成功的两种解决思路

    WIN10专业版安装docker不成功的两种解决思路 问题 分析和解决思路 问题 win10 专业版(win10 pro)装最新版docker 时偶尔会发生如下图所示的错误: 分析和解决思路 上图中可 ...

最新文章

  1. bzoj 3675: [Apio2014]序列分割
  2. 挖矿为什么要用显卡_数字货币行情分析 2020/07/17 为什么大佬们都转向显卡挖矿了?...
  3. 9050 端口 linux 进程,Linux中查看某个端口占用情况
  4. 前端开发 填充padding 0229
  5. 深度学习笔记_ RestNet-50
  6. 推荐个我在用的免费翻译软件,支持多家翻译API整合
  7. 【ArcGIS微课1000例】0032:ArcGIS中河流(曲线)、湖泊(水体色)图例制作案例教程
  8. 如何快速入门学习UG编程
  9. 计算机网络基础(韩立刚视频笔记)第一章 概述
  10. 阿贝尔分部求和法的应用(二)
  11. 什么是PR、什么是BD?
  12. python如何定义函数k_Python 函数
  13. yxc_第一章 基础算法(三)_离散化
  14. 弱监督学习框架 Detectron2/DRN-WSOD-pytorch 在服务器/windows上配置安装及使用
  15. 软件测试面试真题 | 黑盒测试和白盒测试的基本概念是什么?
  16. AS升级4.1后插件报错的问题
  17. Spring入门到放弃篇(1)- Spring国际化
  18. 基于Web的校园跑腿管理系统的设计与实现
  19. 软件工程导论---概述--软件危机
  20. USB转串口芯片 CH340 系列

热门文章

  1. Linux 音频驱动(二) ASoC音频驱动之Platform驱动
  2. gantt图和PERT图
  3. 给大家推荐一些免费书籍资源下载
  4. 2022年全球防漏密封胶带行业分析报告
  5. ChatGPT,爆了!
  6. 云鹏个人理财工具0.5版说明书-工具说明(Google Docs)
  7. android中TextView中文字体粗体的方法 (android:textStyle=bold)
  8. 关于SFV的小知识(转)
  9. 对于iOS开发人工智能意味着什么
  10. Win10系统Git安装,及ssh key配置