AcWing 703. 数独检查

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

给定完成的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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pdf文件内容查看器 -- 采用wpf开发

前言 pdf是一种应用非常广的版式文档格式&#xff0c;已成为事实上的国际标准。关于pdf格式的文章汗牛充栋&#xff0c;本文也是关于pdf格式的文章&#xff0c;但是本文不是纸上谈兵&#xff1b;本人这几周一直研究pdf格式内容&#xff0c;不但对pfd格式的内容有所了解&#xf…

AcWing 126. 最大的和

给定一个包含整数的二维矩阵&#xff0c;子矩形是位于整个阵列内的任何大小为1 * 1或更大的连续子阵列。 矩形的总和是该矩形中所有元素的总和。 在这个问题中&#xff0c;具有最大和的子矩形被称为最大子矩形。 例如&#xff0c;下列数组&#xff1a; 0 -2 -7 0 9 2 -6 2 -4…

​WeihanLi.Npoi 根据模板导出Excel

WeihanLi.Npoi 根据模板导出ExcelIntro原来的导出方式比较适用于比较简单的导出&#xff0c;每一条数据在一行&#xff0c;数据列虽然自定义程度比较高&#xff0c;如果要一条数据对应多行就做不到了&#xff0c;于是就想支持根据模板导出&#xff0c;在 1.8.0 版本中引入了根据…

UC浏览器如何开启html5,如何开启手机uc浏览器中的极速模式

如何开启手机uc浏览器中的极速模式当我们在使用手机的时候&#xff0c;可以下载uc浏览器来浏览网页&#xff0c;为了提升网页的浏览速度&#xff0c;可以开启浏览器中的极速模式&#xff0c;接下来就由小编来告诉大家如何操作。具体如下&#xff1a;1.第一步&#xff0c;打开手…

前端扫盲:什么是API网关?为什么它有用?

API 通常被称为应用程序从后端服务访问数据和业务逻辑的前门。API 本质上是一个软件向其他人或程序提供的接口&#xff0c;允许他们与该软件进行交互。 在创建 API 时&#xff0c;需要选择编程语言(Java、Python、PHP 等)来编写 API 逻辑&#xff0c;还需要将 API 部署到服务器…

AcWing 1381. 阶乘

转载地址&#xff1a; https://www.acwing.com/solution/content/31460/ N 的阶乘&#xff08;记作 N!&#xff09;是指从 1 到 N&#xff08;包括 1 和 N&#xff09;的所有整数的乘积。 阶乘运算的结果往往都非常的大。 现在&#xff0c;给定数字 N&#xff0c;请你求出 N…

ProjectFileManager 发布!项目文件管理效率提升10倍以上!

值此特别的新春假期&#xff0c;盛派网络在这里先祝大家新春安康&#xff01;鼠年平安、幸福、发财、万事如意&#xff01;也祝福疫区的同胞和医护人员平安度过这一段关键时期&#xff01;延长的假期显然也为我们日常工作带来了一些障碍&#xff0c;为了能够利用工具进一步提高…

简历中能熟练使用计算机怎么写,过了计算机二级,可以在简历里写“熟练掌握Excel”吗?...

原标题&#xff1a;过了计算机二级&#xff0c;可以在简历里写“熟练掌握Excel”吗&#xff1f;咨询/快消/互联网/四大/投行PEVC/券商绝大多数岗位都会要求“熟练掌握Excel”而尽管绝大多数同学“实际水平根本达不到工作要求”但是每一位同学都敢在简历上放一句薛定谔的「熟练掌…

C++手写a除以b的正余数

我们对a模b要用(a%bb)%b的形式&#xff0c;是因为C中的%与数学上的取模不太一样&#xff0c;举个例子&#xff1a; 1.C&#xff1a;-2%3 -2&#xff0c;出现了负数&#xff0c;在数组中a[i]&#xff0c;i不能为负&#xff0c;因此要转换。 2.数学上&#xff1a;-2%3 1 所以…

.Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还需要掌握identity server4的基本用法,关于identity server4因为涉及到两个协议Oath2.0和openid conn…

在线进位制计算机,计算机基础知识进位计数制.pdf

教学对象 1901、1902 运营班 教学时间 2019 年 4 月 9 日第一单元 计算机基础知识教学内容任务二 进位计数制1、掌握不同数制的表示方式。知识目标2、不同进制之间的转换1、了解计算机中采取二进制的原因能力目标 2、二进制、八进制、十六进制、十进制之间的转换3、二进制数据的…

【C# 调用 Go 语言】0x2 参数、返回值与类型转换

在上篇文章【C# 调用 Go 语言】0x1 Hello Golang 中&#xff0c;我们将 Golang 源码编译为动态链接库&#xff08;dll&#xff09;&#xff0c;用 C# 调用 Golang 导出的方法并成功的看到了控制台的输出。本篇文章将对 C# 调用 Golang 方法做更详细的介绍&#xff0c;涉及如何…

AcWing 1214. 波动数列

观察这个数列&#xff1a; 1 3 0 2 -1 1 -2 … 这个数列中后一项总是比前一项增加2或者减少3&#xff0c;且每一项都为整数。 栋栋对这种数列很好奇&#xff0c;他想知道长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢&#xff1f; 输入格…

单链表式并查集应用举例

给定一个长度为 N 的数组 A[A1,A2,⋅⋅⋅AN]&#xff0c;数组中有可能有重复出现的整数。 现在小明要按以下方法将其修改为没有重复整数的数组。 小明会依次修改 A2,A3,⋅⋅⋅,AN。 当修改 Ai 时&#xff0c;小明会检查 Ai 是否在 A1∼Ai−1 中出现过。 如果出现过&#xff0c;…

《ASP.NET Core 微服务实战》-- 读书笔记(第1章 、第2章)

译者序微服务设计方法清晰定义了各个开发团队的业务边界&#xff0c;微服务框架以不同方式实现了服务之间的协作与集成。.NET Core 作为全新的 .NET 技术&#xff0c;它不仅完全开源、跨平台&#xff0c;更面向云原生开发进行了大量细致的优化。它完全模块化&#xff0c;不依赖…

html缩进标签quote,HTML blockquote 标签

HTML 标签标签同样是对文本进行引用&#xff0c;不同的是该标签引用的是长文本。标签内的内容会自动有缩进。实例定义一个摘自另一个源的块引用&#xff1a;For 50 years, WWF has been protecting the future of nature. The worlds leading conservation organization, WWF w…

大学计算机基础英语翻译,大学计算机基础 教学课件 978 7 302 21247 8 第7章 常用工具软件.pdf...

第7章 常用工具软件7.1 文件压缩工具——WinRAR7.2 图片浏览工具——ACDSee7.3 常用杀毒工具——RISING7.4 硬盘备份工具——Ghost7.5 翻译工具——金山词霸7.6 迅雷下载工具——Thunder《大学计算机基础》 第7章 常用工具软件 第1页7.1 文件压缩工具——WinRARWinRAR是32位W…

AcWing 1047. 糖果

由于在维护世界和平的事务中做出巨大贡献&#xff0c;Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。 在这一天&#xff0c;Dzx可以从糖果公司的 N 件产品中任意选择若干件带回家享用。 糖果公司的 N 件产品每件都包含数量不同的糖果。 Dzx希望他选择的产品包含的糖…

使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务

真没想到大过年还在家里写代码写文章&#xff0c;本来还打算自驾半个月没想出现这情况。在这里祝福全国同胞在新的一年里身体健康&#xff01;希望阳光天气早日照射在这片土地上&#xff0c;给人带来新一年的希望&#xff01;NetBenchmark是针对网络服务压测的开源组件&#xf…

HTML怎么去除数组的重复元素,js去除数组中重复元素并排序

/p>"http://www.w3.org/TR/html4/strict.dtd">003_obj//去掉数组中重复的元素var arr[1,2,2,3,3,5,5,1,2,4,7,8,96,3,5,2,1,4,5];//解析步骤//1.把数组转换成一个JS对象//2.把数组中的值变成JS对象中的Key//3.把这个对象再还原成数组//将数组转换成对象functio…