【模拟】验证数独
题目:验证数独 rqnoj289
题目描述
Alunay最近迷上了数独这个游戏,他在完成一个数独后总要费一些时间来检查。于是他把Whitegene作为苦力拽来帮他检查。由于Whitegene是搞OI的,所以他就想写个程序来判断Alunay完成的数独是否正确。不过最近他在感情上遇到了一些问题没有功夫去写,就想请你帮他完成这个任务。
数独规则:拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。
输入格式
一个9*9个矩阵
输出格式
一个数字,1为构成数独,0为不构成数独
样例输入
样例输出
数独都玩过吧。。。这个只是验证,不要你算
C++ Code
#include<cstdio> #include<iostream> bool h[12]; int a[12][12]; int ti[12]= {0,1,1,1,4,4,4,7,7,7}; int tii[12]={0,3,3,3,6,6,6,9,9,9}; int tj[12]= {0,1,4,7,1,4,7,1,4,7}; int tjj[12]={0,3,6,9,3,6,9,3,6,9}; int main() { freopen("rqn289.in","r",stdin); freopen("rqn289.out","w",stdout); int i,j,k; for(i=1;i<=9;i++) for(j=1;j<=9;j++) scanf("%d",&a[i][j]); for(k=1;k<=9;k++) { for(j=0;j<=10;j++)h[j]=false; for(i=ti[k];i<=tii[k];i++) for(j=tj[k];j<=tjj[k];j++) { if(!h[a[i][j]]){h[a[i][j]]=true;continue;} if(h[a[i][j]]){printf("0");exit(0);} } } for(i=1;i<=9;i++) { for(j=0;j<=10;j++)h[j]=false; for(j=1;j<=9;j++) { if(!h[a[i][j]]){h[a[i][j]]=true;continue;} if(h[a[i][j]]){printf("0");exit(0);} } } for(i=1;i<=9;i++) { for(j=0;j<=10;j++)h[j]=false; for(j=1;j<=9;j++) { if(!h[a[j][i]]){h[a[j][i]]=true;continue;} if(h[a[j][i]]){printf("0");exit(0);} } } printf("1"); return 0; }
..... 转载请注明出处 ..... http://oijzh.cnblogs.com ..... by jiangzh