**数独是一种流行的单人游戏。
目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字。
每个9x9矩阵在游戏开始时都会有部分数字已经给出,通常有一个独特的解决方案。

给定完成的N2∗N2数独矩阵,你的任务是确定它是否是有效的解决方案。
有效的解决方案必须满足以下条件:
每行包含从1到N2的每个数字,每个数字一次。
每列包含从1到N2的每个数字,每个数字一次。
将N2∗N2矩阵划分为N2个非重叠N∗N子矩阵。 每个子矩阵包含从1到N2的每个数字,每个数字一次。
你无需担心问题的唯一性,只需检查给定矩阵是否是有效的解决方案即可。**

输入格式
第一行包含整数T,表示共有T组测试数据。
每组数据第一行包含整数N。
接下来N2行,每行包含N2个数字(均不超过1000),用来描述完整的数独矩阵。

输出格式
每组数据输出一个结果,每个结果占一行。
结果表示为“Case #x: y”,其中x是组别编号(从1开始),如果给定矩阵是有效方案则y是Yes,否则y是No。

数据范围
1≤T≤100,
3≤N≤6

输入样例:
3
3
5 3 4 6 7 8 9 1 2
6 7 2 1 9 5 3 4 8
1 9 8 3 4 2 5 6 7
8 5 9 7 6 1 4 2 3
4 2 6 8 5 3 7 9 1
7 1 3 9 2 4 8 5 6
9 6 1 5 3 7 2 8 4
2 8 7 4 1 9 6 3 5
3 4 5 2 8 6 1 7 9
3
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
3
5 3 4 6 7 8 9 1 2
6 7 2 1 9 5 3 4 8
1 9 8 3 4 2 5 6 7
8 5 9 7 6 1 4 2 3
4 2 6 8 999 3 7 9 1
7 1 3 9 2 4 8 5 6
9 6 1 5 3 7 2 8 4
2 8 7 4 1 9 6 3 5
3 4 5 2 8 6 1 7 9

输出样例:
Case #1: Yes
Case #2: No
Case #3: No

代码如下:

#include<iostream>
#include <cstring>
using namespace std;
const int N = 40;
int a[N][N];
bool st[N];
int n,m,cnt;
bool check_row()
{for (int i = 0;i<m;i++){memset(st,0,sizeof(st));for (int j = 0;j<m;j++){int t = a[i][j];if (t <1 || t > m) return false;if (st[t]) return false;st[t] = true;}}return true;
}bool check_col()
{for (int i = 0;i<m;i++){memset(st,0,sizeof(st));for (int j = 0;j<m;j++){int t = a[j][i];if (t <1 || t > m) return false;if (st[t]) return false;st[t] = true;}}return true;
}bool check_cell()
{for (int i = 0;i<m;i+=n)for(int j = 0;j<m;j+=n){memset(st,0,sizeof(st));for (int dx = 0;dx<n;dx++)for(int dy = 0;dy<n;dy++){int t = a[i+dx][j+dy];if (t < 1 || t > m) return false;if (st[t]) return false;st[t] = true;}}return true;
}int main()
{cin>>cnt;for (int i = 1;i<=cnt;i++){cin>>n;m = n*n;for (int x = 0;x<m;x++)for (int y = 0;y<m;y++)cin>>a[x][y];if (check_row() &&check_col() && check_cell()){printf("Case #%d: Yes\n",i);}else{printf("Case #%d: No\n",i);}}return 0;
}

AcWing 703. 数独检查相关推荐

  1. 703. 数独检查 - AcWing题库

    https://www.acwing.com/problem/content/705/ 数独是一种流行的单人游戏. 目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的 ...

  2. 【acwing 寒假每日一题(入门组)】day24数独检查

    题目来源:数独检查 题目描述 数独是一种流行的单人游戏. 目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字. 每个9x9矩阵在游戏开始时都会有部分数字已经给 ...

  3. 2021寒假每日一题《数独检查》

    数独检查 题目来源:Google Kickstart2013 Round B Problem A 时间限制:1000ms1000ms1000ms 内存限制:64mb64mb64mb 题目描述 数独是一 ...

  4. python 数独_Python中的数独检查器

    我正在尝试用python创建一个数独检查器:ill_formed = [[5,3,4,6,7,8,9,1,2], [6,7,2,1,9,5,3,4,8], [1,9,8,3,4,2,5,6,7], [ ...

  5. AcWing 1613. 数独简单版

    尽管说是数独简单版,可是对我来说却一点都不简单啊,这个很明显是用递归解决,这个递归又不同以往的递归,以往是一个节点为单位往下找,这个是一行为单位,从(0,0)到(9,9)顺序完全遍历一遍,我只涉及点为 ...

  6. AcWing 166. 数独

    题意: 完成数独 思路: 看到题目,这肯定是搜索,但是试了一发普通的直接就超时了,肯定要加一些剪枝和优化,首先是位运算优化可以将每一行,每一列,每一个九宫格,都利用一个九位二进制数保存,当前还有哪些数 ...

  7. AcWing 166 数独

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

  8. 寒假每日一题(入门组)【week5 完结】

    目录 426. 开心的金明[DP] 703. 数独检查[模拟] 1101. 献给阿尔吉侬的花束[bfs] 89. a^b[快速幂] 433. ISBN号码[模拟] 428. 数列[进制] 421. 陶 ...

  9. 软件工程基础-个人项目-数独游戏

    软件工程基础-个人项目-数独游戏 ----------------------------------------------------------------------------------- ...

最新文章

  1. java dao层_JavaWeb Dao层架构设计
  2. 例解基于UML的面向对象分析与设计
  3. 2.15 Python 中的广播-深度学习-Stanford吴恩达教授
  4. Android Studio中有没有类似于Eclipse中的ctrl+2+L的快捷键? \Android Studio快捷键之代码提示...
  5. php yaf 教程,Yaf教程2:入门使用
  6. Serial.println()和Serial.print() (Arduino编程)
  7. VS2010 书签 工具的使用方法
  8. 如何使用cURL一次测量请求和响应时间?
  9. 【缺陷检测】基于matlab形态学液晶显示器表面缺陷检测【含Matlab源码 1304期】
  10. Macbook pro/air 2013 late -2014 使用转接卡更换NVME SSD休眠不醒问题的解决办法
  11. vue移动端小说阅读器vue全家桶项目,已部署到服务器可访问预览
  12. tkinter canvas绘图全攻略(图形项、配置参数和案例详解)
  13. 高通about.html 文件,高通case提交指南2015Oct(4)(1)
  14. Arduino - 输出引脚扩流
  15. 无需SVIP,两步实现百度网盘不限速
  16. 快学会这个技能-.NET API拦截技法
  17. JavaEE初学之jsp+JavaBean实现页面简单计算器
  18. 软件测试之---测试设计方法
  19. 列表、下标、切片及练习
  20. 乔布斯《遗失的访谈》全文:尘封16年的预见

热门文章

  1. C语言试题二十四之编写一个函数unsigned function(unsigned w),w使一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。
  2. Android之kotlin里面本地图片BitmapFactory.decodeFile转bitmap失败问题
  3. linux之用echo输入数据到文本末尾以及用open ssl命令在证书文件里面获取公钥
  4. linux网络编程之sockaddr_in和in_addr区别
  5. Android之应用程序如何调用支付宝接口
  6. 十三、制作 iVX音乐分享小程序
  7. 幼儿园调查过程怎么写_深圳全托幼儿园哪个好 幼儿园寄宿怎么报名
  8. COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
  9. 是的,我打败了一个奥特曼。
  10. 趣读:程序员泪流满面的20个瞬间!