【acwing 寒假每日一题(入门组)】day24数独检查
题目来源:数独检查
题目描述
数独是一种流行的单人游戏。
目标是用数字填充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<bits/stdc++.h>using namespace std;const int N=40;int n,m;
int w[N][N];
bool st[N];bool check_row()
{for(int i=0;i<m;i++) //遍历每一行{memset(st,0,sizeof st); //初始化标记数组for(int j=0;j<m;j++) //遍历改行的每一个元素{int t=w[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=w[j][i];if(t<1 || t>m) return false; //数字非法if(st[t]) return false; //数字重复st[t]=true;}}return true;
}
bool check_cell()
{for(int x=0;x<m;x+=n) //遍历子矩阵左上角的x坐标for(int y=0;y<m;y+=n) //遍历子矩阵左上角的y坐标{memset(st,0,sizeof st);for(int dx=0;dx<n;dx++) //两重循环 遍历子矩阵for(int dy=0;dy<n;dy++){int t=w[x+dx][y+dy];if(t<1 || t>m) return false; //数字非法if(st[t]) return false; //数字重复st[t]=true;}}return true;
}int main()
{int t;cin>>t;for(int k=1;k<=t;k++){cin>>n;m=n*n;for(int i=0;i<m;i++)for(int j=0;j<m;j++) cin>>w[i][j];if(check_row() && check_col() && check_cell()) printf("Case #%d: Yes\n", k);else printf("Case #%d: No\n", k);}return 0;
}
【acwing 寒假每日一题(入门组)】day24数独检查相关推荐
- AcWing寒假每日一题2058. 笨拙的手指
AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...
- AcWing寒假每日一题
**此文章持续更新,直至寒假没有每日一题!!!! 习题目录 Week 1: 货仓选址 数字三角形 Week 2 蛇形矩阵 红与黑 回文平方 剪绳子 分巧克力 校门外的树(简单暴力法) 奖学金 十三号星 ...
- AcWing - 寒假每日一题2023(DAY 11——DAY 15)
文章目录 一.AcWing 4656. 技能升级(困难) 1. 实现思路 2. 实现代码 二.AcWing 4454. 未初始化警告(简单) 1. 实现思路 2. 实现代码 三.AcWing 4509 ...
- 2022.01.05 Acwing寒假每日一题 拖拉机
1.题目拖拉机 干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了. 他的奶牛非常调皮,决定对约翰来场恶作剧. 她们在田地的不同地方放了 N 捆干草,这样一来,约翰想要开走拖拉机就必须先移除一 ...
- AcWing寒假每日一题 2058.笨拙的手指
题目描述:2058. 笨拙的手指 - AcWing题库 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果时 ...
- AcWing.寒假每日一题
目录 1.4261孤独的照片 2.3400统计次数 3.4366堆石头 4.奶牛大学 1.4261孤独的照片 Farmer John 最近购入了 NN 头新的奶牛,每头奶牛的品种是更赛牛(Guerns ...
- AcWing寒假每日一题2022-第1周
week 1: 2058.笨拙的手指 2041.干草堆 2060.奶牛选美 2019.拖拉机 2014.岛 2058.笨拙的手指 一.问题描述 奶牛贝茜正在学习如何在不同进制之间转换数字.但是她总是犯 ...
- 【AcWing寒假每日一题2023】Day1——孤独的照片
目录 问题描述 思路与代码 问题描述 原题链接
- 2022.01.02 Acwing寒假每日一题 笨拙的手指
1.题目笨拙的手指 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错. 例 ...
最新文章
- Linux下Socket 函数集(三)
- Metasploit--后渗透(一些基本操作方法)
- “2021-01-30T16:00:00.000Z“: expected format “yyyy-MM-dd HH:mm:ss“时间戳格式化
- 计算机的只读储存器,只读存储器
- xmpp 常见错误 一
- 【webpack】从零开始学webpack
- 视频教程-Linux从入门到精通-Linux
- Coding and Paper Letter(五十九)
- hyper-V管理器构建win7虚拟机
- c# rar解压大小_C# 利用WinRAR (加密)压缩及解压缩
- js文字转图片,使用画布绘制
- IAR Error[Pe020]: identifier 'FILE' is undefined 解决方法
- 刚生了宝宝后需要及时办理的6个证件
- 【Spark】Spark基础教程
- Vue 路由导航守卫(全局守卫、路由独享守卫、组件内守卫)详解
- 《Python游戏编程入门》7.4习题
- 基于msp430G2553的低频方波频率、占空比、峰峰值测量函数
- 基于Vue 全家桶实现网易云音乐 WebApp
- Mac无法写入移动硬盘
- 您的下个中文网站可以使用的5个高质量中文Webfont
热门文章
- 网易2021校招数据分析业务笔试题分析
- Java(运用ArrayList集合)实现学生系统搜索学生信息功能
- Kubernetes安装和试用
- 无法播放音频文件你的计算机,Win7电脑音频、视频等文件无法播放怎么办?
- c语言 动物的字符画,字符画构成的动物,多么奇妙!.......来看看吧!
- html 特殊字符 上标,下标
- 小区超市外卖 微信超市送货上门 线上小区便利店超市,超市外送 便利店外卖
- Android Q CTS记录(MTK)
- 基于C/S系统的考试系统
- C语言限制双开关不同为1,网络环境下不同客户之间通信的C语言编程方法(第1稿)...