AcWing 5737. 九宫格
原题链接
简单
作者:
赐荒
,
2025-04-10 22:08:49
· 新疆
,
所有人可见
,
阅读 2
#include <iostream>
#include <vector>
#include <set>
using namespace std;
bool is_huanfang(vector<vector<int>>&v)
{
for(int i = 0;i<9;i++)
{
set<int>row;
for(int j = 0;j<9;j++)
{
if(v[i][j]>9||v[i][j]<1||row.find(v[i][j])!=row.end())
return false;
row.insert(v[i][j]);
}
}
for(int i = 0;i<9;i++)
{
set<int>col;
for(int j = 0;j<9;j++)
{
if(v[j][i]>9||v[j][i]<1||col.find(v[j][i])!=col.end())
return false;
col.insert(v[j][i]);
}
}
for(int i = 0;i<3;i++)
{
for(int j = 0;j<3;j++)
{
set<int>block;
for(int x = i*3;x<i*3+3;x++)
{
for(int y = j*3;y<j*3+3;y++)
{
if(v[x][y]>9||v[x][y]<1||block.find(v[x][y])!=block.end())
return false;
block.insert(v[x][y]);
}
}
}
}
return true;
}
int main()
{
int n;
cin>>n;
vector<int>res(n,0);
for(int k = 0;k<n;k++)
{
vector<vector<int>>a(9,vector<int>(9));
for(int i=0;i<9;i++)
for(int j = 0;j<9;j++)
cin>>a[i][j];
if(is_huanfang(a)) res[k]=1;
}
for(int i : res) cout<<i<<endl;
return 0;
}