博客
关于我
703. 数独检查 - AcWing题库
阅读量:629 次
发布时间:2019-03-14

本文共 1292 字,大约阅读时间需要 4 分钟。

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

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

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

1.png

2.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

#include
#include
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define N 40int a[N][N];int v[N];int m,n;bool check_row(){ for(int i=0; i
m || a[i][j]<1) return false; if(!v[a[i][j]]){ v[a[i][j]] = 1; } else{ return false; } } } return true;}bool check_col(){ for(int i=0; i
m || t<1) return false; if(!v[t]){ v[t] = 1; } else{ return false; } } } return true;}bool check_k()//检查块{ for(int i=0; i
m || t<1) return false; if(!v[t]){ v[t] = 1; } else{ return false; } } } } } return true;}int main(){ int t; cin>>t; for(int xx=1; xx<=t; ++xx){ cin>>n; m = n*n; for(int i=0; i
>a[i][j]; if(check_row() && check_col() && check_k()){ printf("Case #%d: Yes\n",xx); } else{ printf("Case #%d: No\n",xx); } } return 0;}

转载地址:http://jpxoz.baihongyu.com/

你可能感兴趣的文章
WAP短信:融合传统短信和互联网的新型通信方式
查看>>
mysql面试题学校三表查询_mysql三表查询分组后取每组最大值,mysql面试题。
查看>>
Mysql面试题精选
查看>>
MySQL面试题集锦
查看>>
mysql面试题,存储引擎InnoDB和MyISAM
查看>>
mysql面试题:为什么MySQL单表不能超过2000W条数据?
查看>>
mysql面试题:创建索引时会不会锁表?
查看>>
mysql面试题:高度为3的B+树可以存放多少数据?
查看>>
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
mysql驱动、durid、mybatis之间的关系
查看>>
mysql驱动支持中文_mysql 驱动包-Go语言中文社区
查看>>
MySQL高可用之——keepalived+互为主从
查看>>
MySQL高可用切换_(5.9)mysql高可用系列——正常主从切换测试
查看>>
MySQL高可用解决方案
查看>>
MySQL高可用解决方案详解
查看>>
MYSQL高可用集群MHA架构
查看>>
MySQL高可用集群架构MHA企业级实战
查看>>
MySQL高级-MySQL存储引擎
查看>>
MySQL高级-MySQL并发参数调整
查看>>
MySQL高级-MySQL应用优化
查看>>