L1-104 九宫格
题目 L1-104 九宫格
思路分析
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
using ull = unsigned long long;
using PII = pair<int,int>;
using Pll = pair<ll,ll>;
int dx[4]= {-1,0,1,0},dy[4]= {0,1,0,-1};
const int inf = 0x3f3f3f3f;
bool check(vector<vector<int>>& grid) {
for (int i = 0; i < 9; ++i) {
set<int> row, col;
for (int j = 0; j < 9; ++j) {
int r = grid[i][j], c = grid[j][i];
if (r < 1 || r > 9 || row.count(r)) return false;
if (c < 1 || c > 9 || col.count(c)) return false;
row.insert(r);
col.insert(c);
}
}
for (int i = 0; i < 9; i += 3) {
for (int j = 0; j < 9; j += 3) {
set<int> box;
for (int dx = 0; dx < 3; ++dx) {
for (int dy = 0; dy < 3; ++dy) {
int val = grid[i + dx][j + dy];
if (val < 1 || val > 9 || box.count(val)) return false;
box.insert(val);
}
}
}
}
return true;
}
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;cin >> n;
while (n--) {
vector<vector<int>> grid(9, vector<int>(9));
for (int i = 0; i < 9; ++i)
for (int j = 0; j < 9; ++j)
cin >> grid[i][j];
cout << (check(grid) ? 1 : 0) << '\n';
}
return 0;
}
同类题型
视频讲解
⬅️ L1-103 整数的持续性 🏠 00-天梯赛 ➡️ L2
💬 评论