数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。

public class Sudoku {private static int[][] board = new int[9][9];public static void main(String[] args) throws IOException{readFile("sudoku_data_01");//利用IO流读取文件数据 填入一个9*9的数组内solve(0, 0);}//求解x-y 格子的解 在继续向下递归求解下一个格子//本质求多个解 但是实际 数独问题只能有一个解 如果没有解 程序啥也不输出//我们要解决一列完后,才继续向下解决问题所以col = (col + 1) % 9  row = row + (col + 1) / 9private static void solve(int row, int col) {//[row, col]为当前正在解决的格子if (row == 9){printBoard();}else {if (board[row][col] == 0){//需要填数字 1~9for (int num = 1; num <= 9; num++) {if (!isExist(row, col, num)){board[row][col] = num;//解决下一个格子solve(row + (col + 1) / 9, (col + 1) % 9);}//如果此处没有解 必须清零board[row][col] = 0;}}else {//如果格子内数字不为1说明含有数字直接跳入下一个格子solve(row + (col + 1) / 9, (col + 1) % 9);}}}private static boolean isExist(int row, int col, int num) {//同行for (int c = 0; c < 9; c++) {if (board[row][c] == num){return true;}}//同列for (int r = 0; r < 9; r++) {if (board[r][col] == num){return true;}}//同九宫 3*3int rowMin = 0;int colMin = 0;int rowMax = 0;int colMax = 0;if (row >= 0 && row <= 2){rowMin = 0;rowMax = 2;}if (row >= 3 && row <= 5){rowMin = 3;rowMax = 5;}if (row >= 6 && row <= 8){rowMin = 6;rowMax = 8;}if (col >= 0 && col <= 2){colMin = 0;colMax = 2;}if (col >= 3 && col <= 5){colMin = 3;colMax = 5;}if (col >= 6 && col <= 8){colMin = 6;colMax = 8;}for (int r = rowMin; r <= rowMax; r++) {for (int c = colMin; c <= colMax; c++) {if (board[r][c] == num){return true;}}}return false;}private static void readFile(String fileName) throws IOException {File file = new File(fileName);FileReader fr = new FileReader(file);BufferedReader br = new BufferedReader(fr);String line = null;int row = 0;while ((line = br.readLine()) != null){for (int col = 0; col < 9; col++) {board[row][col] = Integer.parseInt(line.charAt(col) + "");}row++;}}private static void printBoard() {for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {System.out.print(board[i][j] + " ");}System.out.println();}}}

数独问题(java)相关推荐

  1. [LeetCode] 36. 有效的数独(java实现)模拟题

    [LeetCode] 36. 有效的数独(java实现)模拟题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...

  2. 数独的Java版解法

    最近偶尔有玩数独,有的题太复杂了不好解,刚好看到LeetCode上有这样的题,就尝试写了个Java的解法. 1. 数独介绍 数独盘面是个九宫,每一宫又分为九个小格.在这八十一格中给出一定的已知数字和解 ...

  3. 数独游戏java版(一)--核心算法

    之前学习javascript时用javascript写过一个数独游戏,最近看了一点java的内容,于是就心血来潮想搞一个java版的数独游戏. 现在将全部代码分享出来和大家学习交流,当然代码中有着各种 ...

  4. 9 9简单的数独游戏python,python实现数独游戏 java简单实现数独游戏

    使用python和java实现数独游戏,有比较才有收获哦. 1.Python版 #--coding:utf-8-- import random import itertools from copy i ...

  5. java数独最快解_[分享]数独的JAVA解法

    package sodoku.puzzler; /** * 求解Sodoku Puzzler的工具类 * @author Eastsun */ public class Solver{ protect ...

  6. Java语言程序设计基础篇-第10版-第一部分-程序设计基础)

    Java程序语言设计(基础篇)-第10版 第一部分 程序设计基础 第1章 计算机.程序和Java概述 1.1 引言 程序设计就是创建(或者开发)软件,软件也称为程序. 简言之,软件包含了指令,告诉计算 ...

  7. 华为OD机试真题大全完整目录

    华为OD机试真题大全完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:华为OD机试真题大全 数量:406篇博文(2023年5月16日截止) 更新时间至:2023年5月16日(后续加上去的博文,会每 ...

  8. aws服务器_AWS无服务器应用程序镜头—摘要

    aws服务器 The whitepaper on AWS Serverless Application Lens is a treasure trove of information on how t ...

  9. java课程 数独 文库_数独java

    数独游戏的算法研究与实现_IT/计算机_专业资料.数独游戏的算法研究与实现 java lSSN1009-3044 ComputerKnowledgeAnd MnoJ;01∥电奠知识与技术 E-mail ...

  10. Java黑皮书课后题第8章:*8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的。重写该程序,通过检验是否每行、每列、每个小方盒中具有

    *8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的.重写该程序 题目 题目描述 程序清单8-4 破题 代码 题目 题目描述 *8.24 ...

最新文章

  1. 如何用计算机弹出ink sans,INKSANS模拟器PC
  2. JavaScript绑定事件的方法[3种]
  3. 重庆云宇宙数据中台:iwemeta.com
  4. 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案
  5. UI5的货币显示格式的逻辑
  6. mysql lepus_MySQL 监控软件lepus天兔
  7. graphics 位深度_热门上海乐家人才公寓深度解析又是一个神
  8. 小猿圈python学习-函数的递归
  9. range作用于对象global失败_彻底弄懂JavaScript作用域问题
  10. iOS页面间跳转的方式
  11. mysql关于连接查询
  12. 提取swf素材_|SWF素材提取工具(SWF Decompiler Magic)下载v5.2.2.20 - 欧普软件下载
  13. MuMu模拟器忘记锁屏密码
  14. 操作系统-课堂笔记-磁盘调度(南航)
  15. 用java做出长方体的表面积_计算长方体、四棱锥的表面积和体积(Java)acm.sdut...
  16. uniapp 微信支付功能
  17. Flutter强制某个页面横屏
  18. UDP可靠性传输协议(QUIC)
  19. matlab的讲稿ppt,Matlab初步(讲稿200508)之一_Matlab讲解_doc_大学课件预览_高等教育资讯网...
  20. 3G QQ客服小密 软件/源码

热门文章

  1. AJA电源维修DCX750sairem射频发生器维修
  2. SQL进阶篇之约束(Constraints)
  3. Android腾讯云通信集成记录(快速实现聊天功能)
  4. 工作流引擎——构建企业流程管控体系
  5. 基于SVM的数据分类预測——意大利葡萄酒种类识别
  6. lilo.conf - lilo 配置文件
  7. 深度学习(16) GAN(4)
  8. 必读论文 | 机器交互必读论文8篇
  9. VMware Workstation for Windows 历史版本
  10. Unhandled rejection Error: EACCES: permission denied, open '/Users