ACdream 1195 Sudoku Checker (暴力)
Sudoku Checker
128000/64000KB (Java/Others)
Problem Description
Sudoku is a popular single player game. The objective is to fill a 9x9 matrix with digits so that each column, each row, and all 9 non-overlapping 3x3 sub-matrices contain all of the digits from 1 through 9. Each 9x9 matrix is partially completed at the
start of game play and typically has a unique solution.

Given a completed N2×N2 Sudoku matrix, your task is to determine whether it is a valid solution.
A valid solution must satisfy the following criteria:
- Each row contains each number from 1 to N2, once each.
- Each column contains each number from 1 to N2, once each.
- Divide the N2×N2 matrix into N2 non-overlappingN×N sub-matrices. Each sub-matrix contains each number from 1 to N2, once each.
You don't need to worry about the uniqueness of the problem. Just check if the given matrix is a valid solution.
Input
The first line of the input gives the number of test cases, T(1 ≤ T ≤ 100).
T test cases follow. Each test case starts with an integer N(3 ≤ N ≤ 6).
The next N2 lines describe a completed Sudoku solution, with each line contains exactlyN2 integers.
All input integers are positive and less than 1000.
Output
For each test case, output one line containing "Case #x: y", where x is the case number (starting from 1) andy is "Yes" (quotes for clarity only) if it is a valid solution, or "No" (quotes for clarity only)
if it is invalid.
Sample Input
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
Sample Output
Case #1: Yes
Case #2: No
Case #3: No
大致题意:给一个数独。看看符不符合要求。
PS:做个题还长姿势了。曾经仅仅听过数独,可是没玩过,这次A道题,搞懂了其本规则,哈哈。收获不小。
好了。那就介绍一下规则吧,现给出n^2*n^2的数独,推断是否满足:
1.每行要用1~n^2的数填满,而且每一个数仅仅出现一次。就是把1~n^2排列到每一行。
2.行的要求跟列一样;
3.还要满足均分成的n^2个n*n的矩形的元素也要满足1~n^2个数的排列。
AC代码:
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int a[40][40], b[40][1000], c[40][1000], d[1000];
int T,t,n; int main(){
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
scanf("%d", &T);
for(int t=1; t<=T; t++){
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%d", &n);
for(int i=1; i<=n*n; i++){ //处理行列
for(int j=1; j<=n*n; j++){
scanf("%d", &a[i][j]);
b[i][a[i][j]]++;
c[j][a[i][j]]++;
}
}
int flag = 1;
for(int i=1; i<=n*n; i++){ //推断行列
for(int j=1; j<=n*n; j++){
if(b[i][j]!=1 || c[i][j]!=1){
flag = 0;
break;
}
}
}
if(flag){
for(int i=1; i<=n; i++){ //推断每一个n*n矩阵
for(int j=1; j<=n; j++){
memset(d,0,sizeof(d));
for(int k=1; k<=n; k++){
for(int s=1; s<=n; s++){
d[a[(i-1)*n+k][(j-1)*n+s]]++;
}
}
for(int k=1; k<=n*n; k++){
if(d[k]!=1){
flag = 0;
break;
}
}
if(!flag) break;
}
if(!flag) break;
}
}
if(flag) printf("Case #%d: Yes\n", t);
else printf("Case #%d: No\n", t);
}
return 0;
}
ACdream 1195 Sudoku Checker (暴力)的更多相关文章
- ACdream 1195 Sudoku Checker (数独)
Sudoku Checker Time Limit:1000MS Memory Limit:64000KB 64bit IO Format:%lld & %llu Submit ...
- Spell checker(暴力)
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20188 Accepted: 7404 De ...
- Codeforce Gym 100015I Identity Checker 暴力
Identity Checker 题目连接: http://codeforces.com/gym/100015/attachments Description You likely have seen ...
- 快速切题 acdream手速赛(6)A-C
Sudoku Checker Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Submi ...
- POJ训练计划1035_Spell checker(串处理/暴力)
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18418 Accepted: 6759 De ...
- hdu 1195:Open the Lock(暴力BFS广搜)
Open the Lock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 2015南阳CCPC H - Sudoku 暴力
H - Sudoku Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Yi Sima was one of the best cou ...
- acdream 小晴天老师系列——晴天的后花园 (暴力+剪枝)
小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- acdream暴力专场中的优美暴力
F - 小晴天老师系列——苹果大丰收 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Other ...
随机推荐
- Intent常用使用汇总
方法一:调用默认的短信程序Intent intent = new Intent(Intent.ACTION_VIEW);intent.setType("vnd.android-dir/mms ...
- 应用ExcelPackage导出Excel
前阵子工作需要,要实现从数据库中导出数据到Excel.老套路 先去百度上查阅资料,发现了以下几种方法: 1:将DataGrid控件中的数据导出Excel 2:将dataview导出excel 3:从网 ...
- 接收一个IT招聘促销信息,试着想参加,有兴趣的可以携手并进,共同。
时隆重举行! 招聘的企业: (个人认为,中智.也买酒还是非常有吸引力的) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHdia2Zj/font/5a6L ...
- 排序(4)---------希尔(shell)排序(C语言实现)
由于考试耽搁了几天,不好意思~~~ 前面的介绍的三种排序算法,都属于简单排序,大家能够看下详细算法,时间复杂度基本都在0(n^2),这样呢,非常多计算机界.数学界的牛人就非常不爽了,他们在家里想啊想, ...
- hdu 亲和串(kmp)
Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...
- HTML5 Introduction
1. HTML5 History HTML4.01 –1999.12 HTML5 – 2014.10– Done (8 years) In2006, WHATWG&W3C, decide to ...
- js获取网页的各种高度
原文:js获取网页的各种高度 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: documen ...
- enq: SQ - contention
--每分钟操作 SQL> select sql_id, mi, count(mi) 2 from (select event, sql_id, to_char(sample_time ...
- Windows Phone 8.1 应用生命周期
原文:Windows Phone 8.1 应用生命周期 一.“后退键”不会终止应用 关于 Windows Phone 8.1 的应用生命周期,第一个要知道的关键就是:“后退键”不会终止应用! 在 8. ...
- Meteor入门
转载Meteor入门介绍 Meteor是什么 基于nodejs的实时web APP开发框架. Meteor能带来什么 简单的说,你可以用js搞定客户端.服务端的开发.另外,客户端.服务端的界限被极 ...