题目链接:http://acm.xidian.edu.cn/problem.php?id=1035
#include <iostream>
#include <string.h>
using namespace std;
/****************************************************************************************************************
题意:判断是否符合数独矩阵
思路:
1,每行每列 1—9 有且只出现一次。(可用一个数组记录哪个数字出现了)
2,每行每列和为45
3,行列分开遍历即可
****************************************************************************************************************/
int f[10],a[10][10];
int main()
{
int T;
cin>>T;
while(T--)
{
int sum=0;
for(int i = 1;i <= 9;i ++)
for(int j = 1;j <= 9;j ++)
cin>>a[i][j];
for(int i = 1;i <= 9;i ++){
memset(f,0,sizeof(f));
sum=0;
for(int j = 1;j <= 9;j ++){
if(a[i][j] < 1 || a[i][j] > 9)
continue;
else if(!f[a[i][j]]){
f[a[i][j]]=1;
sum+=a[i][j];
}
}
if(sum != 45)
break;
}
if(sum != 45)
cout<<"no"<<endl;
else{
for(int i = 1;i <= 9;i ++){
memset(f,0,sizeof(f));
sum=0;
for(int j = 1;j <= 9;j ++){
if(a[j][i] < 1 || a[j][i] > 9)
continue;
else if(!f[a[j][i]]){
f[a[j][i]]=1;
sum+=a[j][i];
}
}
if(sum != 45)
break;
}
if(sum != 45)
cout<<"no"<<endl;
else
cout<<"yes"<<endl;
}
}
return 0;
}