AcWing 703. 数独检查
原题链接
简单
作者:
_hzc_
,
2021-02-06 10:42:31
,
所有人可见
,
阅读 412
纯模拟
C++ 代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 10;
int a[N*N][N*N];
bool b[N*N][N*N][2],c[N][N][N*N];
int t,n,f;
int main()
{
cin>>t;
int k=0;
while(t--)
{
k++;
memset(b,false,sizeof b);
memset(c,false,sizeof c);
cin>>n;
for(int i=1;i<=n*n;i++)
{
for(int j=1;j<=n*n;j++)
{
cin>>a[i][j];
if((b[i][a[i][j]][0]||b[j][a[i][j]][1]||a[i][j]<1||a[i][j]>n*n||
c[(i-1)/n+1][(j-1)/n+1][a[i][j]])&&f==0)
{
f=1;
cout<<"Case #"<<k<<": No"<<endl;
}
b[i][a[i][j]][0]=true;
b[j][a[i][j]][1]=true;
c[(i-1)/n+1][(j-1)/n+1][a[i][j]]=true;
}
}
if(f==0)
{
cout<<"Case #"<<k<<": Yes"<<endl;
}
f=0;
}
}