尽管说是数独简单版,可是对我来说却一点都不简单啊,这个很明显是用递归解决,这个递归又不同以往的递归,以往是一个节点为单位往下找,这个是一行为单位,从(0,0)到(9,9)顺序完全遍历一遍,我只涉及点为单位的递归,所以这个对我来说有点吃力,然后有引用了一个bool观察填这个节点是否可以填某个数。确实原理也很简单,把详细一点的写在注释上吧。

https://www.acwing.com/problem/content/1615/

代码如下

#include<iostream>
using namespace std;
char g[10][10];
int h[10][10],l[10][10],jg[3][3][10];//h行数字i是否被填上,l列数字i是否被填上,jg该九宫格是否填上i
bool dfs(int x,int y)
{if(y==9) x++,y=0;//默认一直向右遍历,然后遇到x出界自动调整if(x==9)//x已经完全遍历完了,输出结果并返回true结束程序{for(int i=0;i<9;i++)cout<<g[i]<<endl;return true;}if(g[x][y]!='.')//要是该点为一个数,就直接往右遍历return dfs(x,y+1);for(int i=1;i<=9;i++)//从数字1到9开始遍历看看能填什么数{if(!h[x][i]&&!l[i][y]&&!jg[x/3][y/3][i])//若是可以填{g[x][y]=i+'0';h[x][i]=l[i][y]=jg[x/3][y/3][i]=1;//这两行表示已经填上if(dfs(x,y+1)) return true;//要是可以就直接结束程序g[x][y]='.';//不可以进行一个还原然后重新去进行遍历h[x][i]=l[i][y]=jg[x/3][y/3][i]=0;}}return false;//若1-9都不行的话返回上一个节点。
}
int main(void)
{for(int i=0;i<9;i++) cin>>g[i];for(int i=0;i<9;i++)for(int j=0;j<9;j++)if(g[i][j]!='.'){h[i][g[i][j]-'0']=1;l[g[i][j]-'0'][j]=1;jg[i/3][j/3][g[i][j]-'0']=1;}//标记每个数字dfs(0,0);
}

AcWing 1613. 数独简单版相关推荐

  1. 每日刷题之数独简单版 AcWing 1613

    数独是一种传统益智游戏,你需要把一个 9×9 的数独补充完整,使得图中每行.每列.每个 3×3 的九宫格内数字 1∼9 均恰好出现一次. 请编写一个程序填写数独. 输入格式 输入共 9 行,每行包含一 ...

  2. LeetCode 11. Container With Most Water--Java 解法--困雨水简单版

    LeetCode 11. Container With Most Water–Java 解法 此文首发于我的个人博客:LeetCode 11. Container With Most Water–Ja ...

  3. luogu P3808 【模板】AC自动机(简单版)

    二次联通门 : luogu P3808 [模板]AC自动机(简单版) /*luogu P3808 [模板]AC自动机(简单版)手速越来越快了10分钟一个AC自动机一遍过编译 + 一边AC感觉不错我也就 ...

  4. 008 数据结构逆向—数组(简单版)

    文章目录 前言 逆向背包数组 一维背包数组 二维背包数组 数组结构分析 总结 前言 对于游戏逆向来说,核心需求其实就只有两个 追踪游戏数据 定位游戏功能call 对于追踪游戏数据来说,单纯从一个寄存器 ...

  5. 【模板】AC自动机(简单版)

    题目背景 通过套取数据而直接"打表"过题者,是作弊行为,发现即棕名. 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据 ...

  6. 【AcWing 243. 一个简单的整数问题2】

    例题:[AcWing 243. 一个简单的整数问题2] 线段树模板题,区间修改区间求和. 题解: 将序列分成N/B块,维护: id[i] = i/B,i所在块标号 res[id] = 第id块的sum ...

  7. P3808,P3796-[模板]AC自动机(简单版/加强版)

    简单版 题目链接: https://www.luogu.org/problem/P3808 题目大意 nnn个模式串,一个文本串,求有多少个模式串出现在文本串里. 解题思路 普通ACACAC自动机不解 ...

  8. C++学习之路 | PTA乙级—— 1089 狼人杀-简单版(精简)

    1089 狼人杀-简单版 (20 分)以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家 ...

  9. node+express项目链接MySQL数据库(最简单版)

    node+express项目链接MySQL数据库(最简单版) (假定你node+express项目已创建完成,可参照这里) 第一步.安装mysql驱动 npm install mysql --save ...

最新文章

  1. yum国内网络源的架设
  2. C++中构造函数和析构函数的调用顺序
  3. keil_rtx特点
  4. 今日头条上传图片时设置封面图报像素低的原因是什么
  5. iOS开发:icon和启动图尺寸(转)
  6. Map 3D中通过程序删除图层及数据源
  7. Win7 x64 sp1安装orcale 10g
  8. java学习(六)多线程 上
  9. java 自定义注解 生成json_Java使用@JsonDeserialize注解实现自定义反序列化器
  10. 【转】Roberts 算子
  11. [Spring]04_最小化Spring XML配置
  12. Win8串口驱动完美支持
  13. 2021最新Java JDK1.8的安装教程
  14. 各种串口助手工具分享
  15. html页面pc端显示正常,手机端页面整体偏左(兼容性处理)
  16. 计算机科班生学计算机组成原理的意义何在呢?
  17. 渗透性测试是一种特殊的信息安全服务
  18. extern “C”的使用
  19. 【JZOJ5773】简单数学题【数论,数学】
  20. 常用时序数据地址 MTGNN

热门文章

  1. 复旦大学EMBA2022毕业季丨毕业不忘初心 荣耀再上征程
  2. 高级智能研究计划(IARPA):大脑皮层建模
  3. 在线网站技术分析工具
  4. js经典面试题及答案汇总(持续更新)
  5. 论文阅读_善用Midjourney
  6. 【网络安全】BGP线路是什么意思?最全BGP路由协议技术详解
  7. 友盟umeng分享微信和朋友圈,图片太大,拉起微信很慢的处理方案
  8. Solis BioDyne带你玩转极速qPCR
  9. mac 查看远程beanstalk队列的工具
  10. eclipse用Java输入_Java基础教程——使用Eclipse快速编写Java输入输出代码