蓝桥杯 数独填数 DFS

  • 题目描述
  • 代码

题目描述

你一定听说过“数独”游戏。如【图1.png】,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。数独的答案都是唯一的,所以,多个解也称为无解。

格式要求,输入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

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

代码

public static void main(String[] args) {Scanner kb=new Scanner(System.in);char [][]table=new char[9][9];for (int i = 0; i <9; i++) {table[i]=kb.nextLine().toCharArray();}dfs(table,0,0);}/*** 深度优先搜索* @param table* @param x* @param y*/private static void dfs(char[][] table, int x, int y) {//当某一次dfs递归到终点table[8][8],x=9输出if (x==9) {for (char[] x1:table) {System.out.println(x1);}System.exit(0);}if (table[x][y]=='0') {//不知道填什么 1-9遍历填入当前位置for (int i = 1; i <10; i++) {boolean flag=check(table,x,y,i);//判断行列是否有重复确定区间if (flag) {table[x][y]=(char)(i+'0');//(y+1)/9 假设y到8了那么 就要到系一行dfs(table, x+(y+1)/9, (y+1)%9);table[x][y]='0';//回溯}}}else {//不是0 搜索下一位置dfs(table, x+(y+1)/9, (y+1)%9);}}/*** 判断是否行列有重复的数字* @param table* @param x* @param y* @param i* @return*/private static boolean check(char[][] table, int x, int y, int value) {boolean flag=true;char c=(char)(value+'0');for (int i = 0; i <9; i++) {//判断行if (table[x][i]==c) {return false;}//判断列if (table[i][y]==c) {return false;}}//判断小九宫格//这里的(x/3)*3--(x/3+1)*3 这里比较难理解 //确定范围for (int i = (x/3)*3; i <(x/3+1)*3; i++) {for (int j = (y/3)*3; j < (y/3+1)*3; j++) {if (table[i][j]==c) {flag=false;}}}return flag;}

【蓝桥杯 数独填数 DFS】相关推荐

  1. 求圈地的方块数java,java实现第三届蓝桥杯方块填数

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

  2. java实现第七届蓝桥杯七星填数

    七星填数 如图[图1.png]所示. 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏. 要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字. 请计算其它位置要填充的数字,答案唯 ...

  3. java实现第七届蓝桥杯方格填数

    方格填数 题目描述 如下的10个格子+--+--+--+| | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+(如果显示有问题 ...

  4. 蓝桥杯 方格填数(全排列+图形补齐)

    方格填数 如下的10个格子 填入0~9的数字,同一数字不能重复填.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数. 注意:你提交的 ...

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

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

  6. 蓝桥杯-K好数(详解易懂)java

    蓝桥杯-K好数java 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数 ...

  7. java蓝桥杯练习 幸运数

    java蓝桥杯练习 幸运数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成. 首先从1开始写出 ...

  8. 蓝桥杯基础练习-数的读法

    蓝桥杯基础练习-数的读法 问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿. 比如说,在对学 ...

  9. [蓝桥杯2019初赛]迷宫-DFS、BFS两种方法

    迷宫问题的最短路,加最小字典序 迷宫文件maze.txt传送门 作者写的2019年B组蓝桥杯解集 . . . DFS的版本 #include<iostream> #include<c ...

最新文章

  1. 主席树 | 莫队 ---- Codeforces Round #716 (Div. 2) D. Cut and Stick [主席树or莫队优化] 区间众数问题(静态)
  2. 关于IAR的一些总结 -- ARM调试和Flash调试的区别
  3. 在树莓派上使用 PowerShell 调用 Azure 上的 .NET Core API 获取疫情数据
  4. Python--协程(gevent模块)
  5. 多任务学习模型之ESMM介绍与实现
  6. Pytorch torch.nonzero()的简单用法
  7. 挖空的煤矿能否储存石油
  8. 求Kinetics400,AVA,prcv2018,Moments in time challenge2018,youtube8M,ActivityNet数据集,原始视频
  9. oracle将汉字转为全拼或返回拼音首字母sql
  10. Opencv学习——LSD直线检测
  11. Ansible之Inventory定义
  12. 【Pygame小游戏】Python版有迷宫嘛?原来藏在个地方呀~
  13. 中国农科院基因组所汪鸿儒课题组诚邀加入
  14. C++程序闪退原因定位
  15. 用vmware安装雨林木风虚拟机系统的坑
  16. redis设计与实现-数据库篇
  17. 在MySQL中创建Oracle中的dept、emp、bonus、salgrade表
  18. Android开发者选项——GPU呈现模式分析
  19. 黑盒测试用例的设计方法有哪些
  20. 来一起学习一下vue3.0 初体验---comeon

热门文章

  1. 踩坑避坑思路--爱剪辑
  2. rsyslog日志级别 配置日志输出级别
  3. 打通选股环节和行情显示链路!股票量化分析工具QTYX-V2.5.1
  4. JS之Web API
  5. 阿里携手分众打通线上线下全链路 U众计划品效协同双11转化大提升
  6. 让 Apache Shiro 保护你的应用
  7. SVN —— 为什么,是什么,怎么用
  8. 图麟科技多项“黑科技”将亮相智博会
  9. 编写简单的辅助脚本来在 Google 表格上记账
  10. VM安装macOS虚拟机忘记密码