你一定听说过“数独”游戏。

如图,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。

数独的答案都是唯一的,所以,多个解也称为无解。

本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。

本题的要求就是输入数独题目,程序输出数独的唯一解。我们保证所有已知数据的格式都是合法的,并且题目有唯一的解。

格式要求:

输入9行,每行9个数字,0代表未知,其它数字为已知。

输出9行,每行9个数字表示数独的解。

例如:

输入(即图中题目):

005300000

800000020

070010500

400005300

010070006

003200080

060500009

004000030

000009700

程序应该输出:

145327698

839654127

672918543

496185372

218473956

753296481

367542819

984761235

521839764

再例如,输入:

800000000

003600000

070090200

050007000

000045700

000100030

001000068

008500010

090000400

程序应该输出:

812753649

943682175

675491283

154237896

369845721

287169534

521974368

438526917

796318452

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 2000ms

package com.company;

import java.util.Scanner;

public class 数独 {

static int qipan[][]=new int[9][9];

public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);

//棋盘输入

for(int i=0;i<9;i++)

{

String line=scanner.nextLine();

for(int j=0;j<9;j++)

{

qipan[i][j]=line.charAt(j)-'0';

}

}

//起始--向棋盘中填入数字

f(0, 0);

}

//向第row行line列填入数字

public static void f(int row,int line)

{

if(row==9) //当数字填满时打印输出

{

print();

return; //打印后退出程序

}

if(qipan[row][line]==0) //当前单元格中没有数字

{

for(int value=1;value<10;value++)

{

if(checkg(row, line, value)!=0&&checkrl(row, line, value)!=0) //分别进行行列检测和宫内检测

{

qipan[row][line]=value; //通过检测,将数字i填入单元格

//输入下一个空格数字

if(line<8) f(row, line+1);

else if(row<9&&line==8) f(row+1, 0);

//回溯 该点填入的数字错误 进行重置并尝试下一个未重复数字

qipan[row][line]=0;

}

}

}else //当前单元格中有数字,寻找下一单元格

{

if(line<8) f(row, line+1);

else if(row<9&&line==8) f(row+1, 0);

}

}

//宫内检测

public static int checkg(int row,int line,int value)

{

if(row>=0&&row<=2) row=0;

if(row>=3&&row<=5) row=3;

if(row>=6&&row<=8) row=6;

if(line>=0&&line<=2) line=0;

if(line>=3&&line<=5) line=3;

if(line>=6&&line<=8) line=6;

for(int i=row;i

{

for(int j=line;j

{

// System.out.println(i+" "+j);

if(qipan[i][j]==value) //有重复数字

{

return 0;

}

}

}

return 1; //无重复数字

}

//行列检测

public static int checkrl(int row,int line,int value)

{

for(int i=0;i<9;i++)

{

if(qipan[row][i]==value||qipan[i][line]==value) //行或列中有重复的数字

return 0;

}

return 1;

}

//打印

public static void print()

{

for(int i=0;i<9;i++)

{

for(int j=0;j<9;j++)

{

System.out.print(qipan[i][j]);

}

System.out.println();

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

数独游戏完整java代码_Java实现蓝桥杯数独游戏的示例代码相关推荐

  1. 密码锁 java接口_Java实现 蓝桥杯VIP 算法提高 密码锁

    算法提高 题目 2 密码锁 时间限制:1.0s 内存限制:1.0GB 问题描述 你获得了一个据说是古代玛雅人制作的箱子.你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子 ...

  2. Java刷漆问题代码_Java实现蓝桥杯历届试题格子刷油漆

    问题描述 X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆. 你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动 ...

  3. java web购物车代码_java web开发之购物车功能实现示例代码

    之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: 2.用session实现购物车: 3 ...

  4. 编程题 java 密码锁_Java实现 蓝桥杯VIP 算法提高 密码锁

    算法提高 题目 2 密码锁 时间限制:1.0s 内存限制:1.0GB 问题描述 你获得了一个据说是古代玛雅人制作的箱子.你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子 ...

  5. 【蓝桥杯 数独填数 DFS】

    蓝桥杯 数独填数 DFS 题目描述 代码 题目描述 你一定听说过"数独"游戏.如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列 ...

  6. Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)

    Java算法学习:蓝桥杯--地宫寻宝(DFS✖记忆型递归) 题目: 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出 ...

  7. java printwriter 文件,java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr...

    java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr 下面示例代码演示使用PrintWriter方法写文件. PrintWriter的构造函数接受Fil ...

  8. java猜数字游戏代码_Java如何编写猜数字游戏

    在看到这个小游戏的时候,首先想到的是: 1.电脑会随机生成一个数字. 2.我们需要去猜测生成的这个数字,并输入我们猜测的值. 3.电脑生成的随机数需要和我们猜测的值相比较. 4.比较的结果需要体现出来 ...

  9. java socket 重连复用_Java Socket编程基础及深入讲解(示例代码)

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

最新文章

  1. 搜索算法,一触即达:GitHub上有个规模最大的开源算法库
  2. 俄罗斯将用机器人当探月先锋
  3. 国科大高级人工智能9-模糊数学和遗传算法
  4. STM32 位段详解
  5. vvv在线文档导出工具_胖观察在线协作文档导出之痛?主流协作文档导出评测
  6. Spring集成JDBC组件开发
  7. springboot中获得app_Spring Boot 应用程序启动流程分析
  8. 自媒体人本质是互联网公司内容运营的角色
  9. 如何解决未经检查的演员表警告?
  10. [转载] Python3 字典 values() 方法
  11. LoadRunner11完美破解
  12. oracle支持sha256加密算法,Sha256 加密算法
  13. opencv 手指位置检测
  14. steam怎么设置邮箱令牌_steam收不到邮箱令牌验证码怎么办 这些知识你不一定知道...
  15. android bitmap设置透明度,Android 设置图片 Bitmap任意透明度
  16. 成都地铁线路图高清大图
  17. backtrack 5 r3
  18. 利用Python爬取朋友圈数据,爬到你开始怀疑人生
  19. html5中圆形的绘制
  20. ps怎么自定义dialog的样式跟输入框

热门文章

  1. 【2023年苏州大学计算机考研上岸经验分享】
  2. 期刊论文发表时作者简介怎么写
  3. c++ algorithm 函数简介
  4. 每天回顾linux命令(whereis)
  5. ZM-SMT-SL-500婚姻登记智能自助服务终端技术规格说明书
  6. Linux-挖矿木马清理
  7. 纯JAVA模拟、实现QQ简易聊天互动程序
  8. 便携式30W太阳能发电板光伏板设计移动电源充电器
  9. 解决git push 出现错误 error: failed to push some refs to 'git@github.com:xxxxx'
  10. jquery点击缓慢滚动到页面顶部