题目来源:数独检查

题目描述

数独是一种流行的单人游戏。

目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字。

每个9x9矩阵在游戏开始时都会有部分数字已经给出,通常有一个独特的解决方案。


给定完成的N2∗N2数独矩阵,你的任务是确定它是否是有效的解决方案。

有效的解决方案必须满足以下条件:

  1. 每行包含从1到N2的每个数字,每个数字一次。
  2. 每列包含从1到N2的每个数字,每个数字一次。
  3. 将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数独检查相关推荐

  1. AcWing寒假每日一题2058. 笨拙的手指

    AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...

  2. AcWing寒假每日一题

    **此文章持续更新,直至寒假没有每日一题!!!! 习题目录 Week 1: 货仓选址 数字三角形 Week 2 蛇形矩阵 红与黑 回文平方 剪绳子 分巧克力 校门外的树(简单暴力法) 奖学金 十三号星 ...

  3. AcWing - 寒假每日一题2023(DAY 11——DAY 15)

    文章目录 一.AcWing 4656. 技能升级(困难) 1. 实现思路 2. 实现代码 二.AcWing 4454. 未初始化警告(简单) 1. 实现思路 2. 实现代码 三.AcWing 4509 ...

  4. 2022.01.05 Acwing寒假每日一题 拖拉机

    1.题目拖拉机 干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了. 他的奶牛非常调皮,决定对约翰来场恶作剧. 她们在田地的不同地方放了 N 捆干草,这样一来,约翰想要开走拖拉机就必须先移除一 ...

  5. AcWing寒假每日一题 2058.笨拙的手指

    题目描述:2058. 笨拙的手指 - AcWing题库 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果时 ...

  6. AcWing.寒假每日一题

    目录 1.4261孤独的照片 2.3400统计次数 3.4366堆石头 4.奶牛大学 1.4261孤独的照片 Farmer John 最近购入了 NN 头新的奶牛,每头奶牛的品种是更赛牛(Guerns ...

  7. AcWing寒假每日一题2022-第1周

    week 1: 2058.笨拙的手指 2041.干草堆 2060.奶牛选美 2019.拖拉机 2014.岛 2058.笨拙的手指 一.问题描述 奶牛贝茜正在学习如何在不同进制之间转换数字.但是她总是犯 ...

  8. 【AcWing寒假每日一题2023】Day1——孤独的照片

    目录 问题描述 思路与代码 问题描述 原题链接

  9. 2022.01.02 Acwing寒假每日一题 笨拙的手指

    1.题目笨拙的手指 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错. 例 ...

最新文章

  1. Linux下Socket 函数集(三)
  2. Metasploit--后渗透(一些基本操作方法)
  3. “2021-01-30T16:00:00.000Z“: expected format “yyyy-MM-dd HH:mm:ss“时间戳格式化
  4. 计算机的只读储存器,只读存储器
  5. xmpp 常见错误 一
  6. 【webpack】从零开始学webpack
  7. 视频教程-Linux从入门到精通-Linux
  8. Coding and Paper Letter(五十九)
  9. hyper-V管理器构建win7虚拟机
  10. c# rar解压大小_C# 利用WinRAR (加密)压缩及解压缩
  11. js文字转图片,使用画布绘制
  12. IAR Error[Pe020]: identifier 'FILE' is undefined 解决方法
  13. 刚生了宝宝后需要及时办理的6个证件
  14. 【Spark】Spark基础教程
  15. Vue 路由导航守卫(全局守卫、路由独享守卫、组件内守卫)详解
  16. 《Python游戏编程入门》7.4习题
  17. 基于msp430G2553的低频方波频率、占空比、峰峰值测量函数
  18. 基于Vue 全家桶实现网易云音乐 WebApp
  19. Mac无法写入移动硬盘
  20. 您的下个中文网站可以使用的5个高质量中文Webfont

热门文章

  1. 网易2021校招数据分析业务笔试题分析
  2. Java(运用ArrayList集合)实现学生系统搜索学生信息功能
  3. Kubernetes安装和试用
  4. 无法播放音频文件你的计算机,Win7电脑音频、视频等文件无法播放怎么办?
  5. c语言 动物的字符画,字符画构成的动物,多么奇妙!.......来看看吧!
  6. html 特殊字符 上标,下标
  7. 小区超市外卖 微信超市送货上门 线上小区便利店超市,超市外送 便利店外卖
  8. Android Q CTS记录(MTK)
  9. 基于C/S系统的考试系统
  10. C语言限制双开关不同为1,网络环境下不同客户之间通信的C语言编程方法(第1稿)...