AcWing 703. 贴一个简洁的代码
原题链接
简单
作者:
静态规划
,
2021-02-04 08:34:11
,
所有人可见
,
阅读 369
#include <iostream>
const int s = 40;
int a[s][s], r[s][s], c[s][s], cell[s][s][s];
using namespace std;
int main() {
int t, n, n2;
cin >> t;
for (int k = 1; k <= t; k++) {
cin >> n;
n2 = n*n;
int flag = 1;
fill(r[0], r[0] + s * s, 0);
fill(c[0], c[0] + s * s, 0);
fill(cell[0][0], cell[0][0] + s * s * s, 0);
for (int i = 0; i < n2; i++) {
for (int j = 0; j < n2; j++) {
cin >> a[i][j];
int v = a[i][j];
if (v > n2 || v < 1){
flag = 0;
continue;
}
if (r[i][v] || c[j][v] || cell[i/n][j/n][v]) flag = 0;
r[i][v] = c[j][v] = cell[i/n][j/n][v] = 1;
}
}
if (flag) printf("Case #%d: Yes\n", k);
else printf("Case #%d: No\n", k);
}
return 0;
}