#include <bits/stdc++.h>
#define maxn 100005
#define MOD 1000000007
typedef long long ll;
using namespace std;
int d[50][50];
int main() {
int n;
scanf("%d", &n);
int odd = -1, even = 0;
for(int i = 0; i < n; i++){
d[n/2][i] = odd += 2;
if(n/2 == i)
continue;
d[i][n/2] = odd += 2;
}
for(int i = 0; i < n-1; i++){
int sign = 0;
for(int j = 0; j < n-1; j++) {
if(d[i][j] == 0 && d[i+1][j] == 0 && d[i][j+1] == 0 && d[i+1][j+1] == 0) {
if(odd == n * n) {
sign = 1;
break;
}
d[i][j] = odd += 2;
d[i+1][j] = odd += 2;
d[i][j+1] = odd += 2;
d[i+1][j+1] = odd += 2;
}
}
if(sign)
break;
}
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++) {
if(d[i][j] == 0)
d[i][j] = even += 2;
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++) {
if(j == 0)
printf("%d", d[i][j]);
else
printf(" %d", d[i][j]);
}
puts("");
}
return 0;
}
Educational Codeforces Round 16-C. Magic Odd Square
最新推荐文章于 2021-09-01 17:58:43 发布