YBTOJ 入门到进阶模拟赛 Day2 数独游戏
数独游戏 link
判断重复
数独要求每一行、每一列、每一个3×3方阵内的数字,不重复。
行和列重复判断是相当简单的。
我们可以定义两个bool型二维数组,
当此行(或列)填充数字时,
我们可以直接把这行的这个数字打上true表示有数字了。
//譬如第一行第三列填入数字2
bool p[][],l[][];//p:行,l:列;
p[1][2]=l[3][2]=true;
如果后面再填充数字,就判断此行(或列)是否填过这个数字即可。
重点:判断方阵中数字重复
如果判断方阵中数字重复?
怎样用行列来表示是几方阵成了个问题。
但是不用怕,我们有van能的数学。
可以看到,每过3列,方阵的序号+1,
每过3行,方阵的序号+3。
方阵序号=(行数-1)/3*3+(列数-1)/3+1
//注意!行数列数要-1,因为3的整数倍数/3会比原方阵大1,不能满足上述需求。
#include <cstdio>
#include <iostream>
#include <cstdlib>using namespace std;const int N = 20;
char s;
int ans[N][N], h[N][N], l[N][N], g[N][N];int solve(int x, int y) {return (x - 1) / 3 * 3 + (y - 1) / 3 + 1;}void print()
{for(int i = 1; i <= 9; i++){for(int j = 1; j <= 9; j++)printf("%d",ans[i][j]);printf("\n");}exit(0);
}void dfs(int x, int y)
{if(ans[x][y]){if(x == 9 && y == 9) print();else if(y == 9) dfs(x + 1, 1);else dfs(x, y + 1);return ;}for(int i = 1; i <= 9; i++){if(!h[x][i] && !l[y][i] && !g[solve(x, y)][i]){ans[x][y] = i;h[x][i] = l[y][i] = g[solve(x,y)][i] = 1;if(x == 9 && y == 9) print();else if(y == 9) dfs(x + 1, 1);else dfs(x, y + 1);ans[x][y] = 0;h[x][i] = l[y][i] = g[solve(x,y)][i] = 0;}}
}int main()
{freopen("sudoku.in", "r", stdin);freopen("sudoku.out", "w", stdout);for(int i = 1; i <= 9; i++){for(int j = 1; j <= 9; j++){cin>>s;int t = s - '0';if(t >= 1 && t <= 9) h[i][t] = l[j][t] = g[solve(i, j)][t] = 1, ans[i][j] = t;}}dfs(1, 1);return 0;
}
YBTOJ 入门到进阶模拟赛 Day2 数独游戏相关推荐
- 【ybt 入门到进阶模拟赛 Day2 T4】数独游戏
数独游戏 题目链接:ybt 入门到进阶模拟赛 Day2 T4 题目大意 就要你填一个数独,保证有唯一解. 思路 直接暴力 dfs,不用剪枝优化都可以过. 代码 #include<queue> ...
- 嗨CE系列教程全套(入门,进阶,高阶)游戏驱动反调试
嗨CE系列教程全套(入门,进阶,高阶)游戏驱动反调试等 1.入门教程5课 1.如何修改游戏 2.快速找到基址和指针 3.通过一个地址快速找到其他地址 4.制作一个简易修改器 5.一些重要的小技巧和理论 ...
- CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告
T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...
- YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫
文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...
- 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】
U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...
- LYDSY模拟赛day2 Divisors
/* 注意分解质因数,如果i是,那么n/i也是,这样就可以解决分解质因数的时间问题了 当 k ≥ 1 时,只有这些数的约数才会对答案产生贡献. 求出 m 个数的所有不超过 n 的约数,去重后统计即可. ...
- 【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)...
题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k ...
- android 手机九宫格解锁实验报告,Android数独游戏实验分析报告.pdf
本科生实验报告 实验课程 Android 课程设计数独游戏 学院名称 信息科学与技术学院 专业名称 物联网工程 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一五 年 十 月 二〇一五 年 十 ...
- 数学建模系列:历年优秀论文+入门+进阶+国赛+美赛+其他
数模系列:历年优秀论文+入门+进阶+国赛+美赛+其他(待更新中) 数模成绩为国二\省一\o奖\H奖,在博客做一个总结.先放国赛美赛的历年优秀论文,资料来源微信公众号数学模型.(目前完成部分:入门+进阶 ...
最新文章
- 使用BabeLua3.x在cocos2d-x中编辑和调试Lua
- Qt学习(七):定时器QTimer
- crs 管理的几个演示(培训作业)
- 在同一个机器上布署两个JBOSS,要修改那些端口?
- 阿里巴巴Maven仓库配置
- python把矩阵堆叠成大矩阵_python numpy 矩阵堆叠实例
- Win10显示此应用无法在你的电脑上运行 此应用无法在你的电脑上运行处理办法
- 【无标题】写博客的第一天
- 编程实现提取点云数据的树的中心和提取山区的DEM
- pta冒泡排序c语言_PTA 冒泡排序
- 大数据第三季--spark(day1)-徐培成-专题视频课程
- C# 命名空间中不存在类型或命名空间名,是否缺少程序集引用
- waf指纹识别工具WAFW00F的使用
- 单因子方差分析Python实现(小鸡增肥)
- 计算机u盘病毒清除方式,U盘如何格式化和清理病毒
- android rn动态技术,ReactNative入门之android与rn初始化参数的传递
- 相关性分析热点图_防老剂TMQ及6PPD价格上涨逻辑分析及后市展望
- php微信端获取头像不显示不出来,解决微信转发到朋友圈没有获取页面头像以图标展示。...
- 郑州大学计算机硕士分数线,2021郑州大学考研复试线:热门专业超过400分,机械类专业仅263分...
- 【技术贴】全盘文件夹快捷方式 杀毒后快捷方式消失,但文件夹打不开。重装系统后还是快捷方式的解决办法。...