C. Not Adjacent Matrix
题目传送门:
题面:
题目大意:
构造问题,要让相邻单元格的差值不为1。
能构造输出,不能就直接-1。
所以想到用奇数和奇数相邻,偶数和偶数相邻。
可以先从小到大填充所有的奇数,填完奇数之后再从小到大填充完所有的偶数。
这种做法除了
n
=
2
n = 2
n=2 不满足情况应当输出-1外,其他的均可满足。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 200;
int a[maxn][maxn];
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
if (n == 2) {
cout << -1 << endl;
continue;
}
int cnt = n * n;
int x = 1;
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
cout << x << " ";
if (x + 2 > cnt&&cnt>=2) x = 2;
else x += 2;
}
cout<<endl;
}
}
}