AcWing 1613. 数独简单版
尽管说是数独简单版,可是对我来说却一点都不简单啊,这个很明显是用递归解决,这个递归又不同以往的递归,以往是一个节点为单位往下找,这个是一行为单位,从(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. 数独简单版相关推荐
- 每日刷题之数独简单版 AcWing 1613
数独是一种传统益智游戏,你需要把一个 9×9 的数独补充完整,使得图中每行.每列.每个 3×3 的九宫格内数字 1∼9 均恰好出现一次. 请编写一个程序填写数独. 输入格式 输入共 9 行,每行包含一 ...
- LeetCode 11. Container With Most Water--Java 解法--困雨水简单版
LeetCode 11. Container With Most Water–Java 解法 此文首发于我的个人博客:LeetCode 11. Container With Most Water–Ja ...
- luogu P3808 【模板】AC自动机(简单版)
二次联通门 : luogu P3808 [模板]AC自动机(简单版) /*luogu P3808 [模板]AC自动机(简单版)手速越来越快了10分钟一个AC自动机一遍过编译 + 一边AC感觉不错我也就 ...
- 008 数据结构逆向—数组(简单版)
文章目录 前言 逆向背包数组 一维背包数组 二维背包数组 数组结构分析 总结 前言 对于游戏逆向来说,核心需求其实就只有两个 追踪游戏数据 定位游戏功能call 对于追踪游戏数据来说,单纯从一个寄存器 ...
- 【模板】AC自动机(简单版)
题目背景 通过套取数据而直接"打表"过题者,是作弊行为,发现即棕名. 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据 ...
- 【AcWing 243. 一个简单的整数问题2】
例题:[AcWing 243. 一个简单的整数问题2] 线段树模板题,区间修改区间求和. 题解: 将序列分成N/B块,维护: id[i] = i/B,i所在块标号 res[id] = 第id块的sum ...
- P3808,P3796-[模板]AC自动机(简单版/加强版)
简单版 题目链接: https://www.luogu.org/problem/P3808 题目大意 nnn个模式串,一个文本串,求有多少个模式串出现在文本串里. 解题思路 普通ACACAC自动机不解 ...
- C++学习之路 | PTA乙级—— 1089 狼人杀-简单版(精简)
1089 狼人杀-简单版 (20 分)以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家 ...
- node+express项目链接MySQL数据库(最简单版)
node+express项目链接MySQL数据库(最简单版) (假定你node+express项目已创建完成,可参照这里) 第一步.安装mysql驱动 npm install mysql --save ...
最新文章
- yum国内网络源的架设
- C++中构造函数和析构函数的调用顺序
- keil_rtx特点
- 今日头条上传图片时设置封面图报像素低的原因是什么
- iOS开发:icon和启动图尺寸(转)
- Map 3D中通过程序删除图层及数据源
- Win7 x64 sp1安装orcale 10g
- java学习(六)多线程 上
- java 自定义注解 生成json_Java使用@JsonDeserialize注解实现自定义反序列化器
- 【转】Roberts 算子
- [Spring]04_最小化Spring XML配置
- Win8串口驱动完美支持
- 2021最新Java JDK1.8的安装教程
- 各种串口助手工具分享
- html页面pc端显示正常,手机端页面整体偏左(兼容性处理)
- 计算机科班生学计算机组成原理的意义何在呢?
- 渗透性测试是一种特殊的信息安全服务
- extern “C”的使用
- 【JZOJ5773】简单数学题【数论,数学】
- 常用时序数据地址 MTGNN