递归回溯算法完成数独求解。
“数独”是一种智力游戏,一般认为起源于“正交拉丁方”,经日本人推广后风靡全球。如下图是一个数独的示例,玩家需要根据 9 × 9 盘面上的已知数字,推理出所有剩余空格的数字,并且满足每一行、每一列、每一个同色九宫内的数字均含1~9 不重复:

数独的答案一般都是唯一的,如果有多个解也称为无解。

思路:虽说原题目要我们递归 = =,但是偷懒 写出递归就会写非递归,dfs暴力,从左到右 从上往下开始搜索

import java.util.Scanner;public class c3_3 {public static int[][] qp = new int[9][9];public static Boolean t = false;public static void main(String[] args) {// TODO Auto-generated method stubint[][] qp = new int[9][9];//初始化矩阵chushi();dfs(0,0);}private static void dfs(int x, int y) {if(x==9 || y == 9) {return;}//判断是否棋盘给了初始值if(qp[x][y] != 0) {if(y==8) {dfs(x+1, 0);}else {dfs(x, y+1);}}else {//暴力for(int i = 1; i < 10; i++) {if(panduan(x,y,i)) {qp[x][y] = i;//System.out.println("("+x+","+y+")"+":"+qp[x][y]);if(x == 8 && y == 8) {t = true;for(int a = 0; a < 9; a++) {for(int b = 0; b < 9; b++) {System.out.print(qp[a][b]+" ");}System.out.println();}return;}if(y==8) {dfs(x+1, 0);qp[x][y] = 0;}else {dfs(x, y+1);qp[x][y] = 0;}}if(t) {return;}}}return;}private static boolean panduan(int x, int y, int z) {//横向判断for(int i = 0; i < 9; i++) {if(qp[x][i] == z) {return false;}}//纵向判断for(int i = 0; i < 9; i++) {if(qp[i][y] == z) {return false;}}//同一个方格判断if(x >= 0 && x < 3) {if(y >= 0 && y < 3) {for(int i = 0; i < 3; i++) {for(int j = 0; j < 3; j++) {if(qp[i][j] == z) {return false;}}}}else if(y >= 3 && y < 6){for(int i = 0; i < 3; i++) {for(int j = 3; j < 6; j++) {if(qp[i][j] == z) {return false;}}}}else {for(int i = 0; i < 3; i++) {for(int j = 6; j < 9; j++) {if(qp[i][j] == z) {return false;}}}}}else if(x >= 3 && x < 6) {if(y >= 0 && y < 3) {for(int i = 3; i < 6; i++) {for(int j = 0; j < 3; j++) {if(qp[i][j] == z) {return false;}}}}else if(y >= 3 && y < 6){for(int i = 3; i < 6; i++) {for(int j = 3; j < 6; j++) {if(qp[i][j] == z) {return false;}}}}else {for(int i = 3; i < 6; i++) {for(int j = 6; j < 9; j++) {if(qp[i][j] == z) {return false;}}}}}else {if(y >= 0 && y < 3) {for(int i = 6; i < 9; i++) {for(int j = 0; j < 3; j++) {if(qp[i][j] == z) {return false;}}}}else if(y >= 3 && y < 6){for(int i = 6; i < 9; i++) {for(int j = 3; j < 6; j++) {if(qp[i][j] == z) {return false;}}}}else {for(int i = 6; i < 9; i++) {for(int j = 6; j < 9; j++) {if(qp[i][j] == z) {return false;}}}}}return true;}private static void chushi() {qp[0][2] = 5;qp[0][3] = 3;qp[1][0] = 8;qp[1][7] = 2;qp[2][1] = 7;qp[2][4] = 1;qp[2][6] = 5;qp[3][0] = 4;qp[3][5] = 5;qp[3][6] = 3;qp[4][1] = 1;qp[4][4] = 7;qp[4][8] = 6;qp[5][2] = 3;qp[5][3] = 2;qp[5][7] = 8;qp[6][1] = 6;qp[6][3] = 5;qp[6][8] = 9;qp[7][2] = 4;qp[7][7] = 3;qp[8][5] = 9;qp[8][6] = 7;}}

“数独”是一种智力游戏,一般认为起源于“正交拉丁方”,经日本人推广后风靡全球。相关推荐

  1. 方块填数 “数独”是当下炙手可热的智力游戏。一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部

    /* 方块填数 "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6的小格被分为 ...

  2. flash静态的农夫走路_智力游戏过河|智力游戏过河flash合集下载 _单机游戏下载...

    智力游戏过河,过河游戏是经典的益智游戏了,需要很高的IQ,能很好锻炼逻辑能力,经典的过河游戏有人鬼过河,农夫过河,高IQ过河,青蛙过河等等.跑跑车为您提供的智力游戏过河flash合集,包含了这一些游戏 ...

  3. 智力游戏界的三大不可思议

    中国人发明的"华容道", 法国人发明的"独立钻石"和匈牙利人发明的"魔术方块"(简称"魔方")被称为智力游戏界的三大不可 ...

  4. 友尽妙招:用Python解“智力游戏”

    大家好,欢迎来到Crossin的编程教室!我是Crossin. 之前国庆假期在家闲来无事,找了一本"思维训练手册"(其实就是一些智力题.推理题,甚至"脑筋急转弯" ...

  5. 游戏HTML翻翻乐,大班智力游戏——翻翻乐.doc

    大班智力游戏--翻翻乐 [活动目标] 1.在玩的过程中进行按规律排列及比较10以内数的大小. 2.培养合作意识,养成遵守规则的好习惯. [活动准备] 1.格子图棋谱若干. 2.收集黄.红两种颜色的饮料 ...

  6. 数独用计算机控制比数学家还厉害,比数独更烧脑的数学游戏,让娃练就最强大脑!...

    原标题:比数独更烧脑的数学游戏,让娃练就最强大脑! 在很多人眼里: 会玩数独 = 高智商 虽然规则简单,但却变幻无穷,充满乐趣,所以爸爸妈妈们都在用数独来锻炼孩子脑力,训练数学思维. 之前,阿木也专门 ...

  7. python游戏解法_友尽妙招:用Python解“智力游戏”

    之前国庆假期在家闲来无事,找了一本"思维训练手册"(其实就是一些智力题.推理题,甚至"脑筋急转弯"),跟家人一起玩智力游戏.这些题是不是真的可以训练人的思维我不 ...

  8. POJ2676,HDU4069解决数独的两种实现:DFS、DLX

    搜索实现:解决数独有两种思考策略,一种是枚举当前格能填的数字的种数,这里有一优化策略就是先搜索能填入种数小的格子:另一种是考虑处理某一行(列.宫)时,对于某一个没用过的数字,若该行(列.宫)只有一个可 ...

  9. 信息系html5论文,基于HTML5的智力游戏设计电子信息工程本科学生毕业论文.doc

    基于HTML5的智力游戏设计电子信息工程本科学生毕业论文 本科学生毕业论文(设计) 题目(中文):基于HTML5的智力游戏设计 (英文):Design of Intelligent Game Base ...

最新文章

  1. 老码农绝密:使用 TS(TypeScript) 的 10 大理由
  2. 使用sourceInsight 提高代码编写效率
  3. IOS 中的MVC设计模式
  4. OSChina 周日乱弹 ——身价上亿,然而找不到女朋友 你信么?
  5. OC基础 代理和协议
  6. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车按键启动和蜂鸣器报警
  7. 一条insert语句导致的性能问题分析(一)
  8. openssl https证书
  9. 女生做一个“程序猿”,真有那么不现实吗?正在学编程的女孩子注意了!
  10. 【 如何将.vue文件中的所有css代码放入一个.css文件中】
  11. 计算机网络的分层结构、协议、服务和接口
  12. SQL Server数据挖掘简介
  13. 记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法
  14. ubuntu8.10_深圳源
  15. 『动态规划』最大子段和
  16. 作为一个新人,怎样学习嵌入式Linux?(转自韦东山)
  17. 射频识别技术漫谈(25)——Felica简介
  18. 【总结】学了不少自然语言处理的理论知识,如何通过实战进一步提高能力?...
  19. win11系统 JDK 环境变量配置失败
  20. 游戏机械键盘哪个好,为什么资深玩家选择Hyperx游戏机械键盘?

热门文章

  1. 使用AutoCAD创建管道并导出PCF文件
  2. Portapack应用开发教程(十八)NavTex接收 B
  3. ThreeJS程序员兼职副业平台推荐
  4. 小问题一枚,键鼠支持多媒体控制的骚年,无法控制音乐、音量等的解决方法
  5. 各厂内推整理 | 第三期
  6. 丹纳赫集团在中国本土研发并生产的首台流式细胞分选仪正式交付
  7. python mypy类型检查_Python 类型检查
  8. java 鼠标悬停显示文字_IntelliJ在鼠标悬停时显示JavaDocs工具提示
  9. 将 Modbus 工业传感器与开源 IIoT 网关连接起来
  10. 用 ThreeJS 简单实现一个类似《七圣召唤》的掷骰子