n=1的回型矩阵
1 2 3
8 9 4
7 6 5
n=1的回型矩阵
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
n=1的回型矩阵
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
n=1的回型矩阵
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
#include <iostream>
#include <cstdio>
using namespace std;
int sum;
void dfs(int** a,int x,int y,int n,int cnt){
a[x][y] = ++cnt;
if(cnt >= sum){
return;
}
for(int i = 0; i < n-1; ++i){
y++;
a[x][y] = ++cnt;
}
for(int i = 0; i < n-1; ++i){
x++;
a[x][y] = ++cnt;
}
for(int i = 0; i < n-1; ++i){
y--;
a[x][y] = ++cnt;
}
for(int i = 0; i < n-2; ++i){
x--;
a[x][y] = ++cnt;
}
if(cnt >= sum)
return;
y++;
dfs(a,x,y,n-2,cnt);
}
int main(){
int n;
while(~scanf("%d",&n)){
int **a = new int *[n];
for(int i = 0;i < n; ++i)
a[i] = new int[n];
int cnt = 0;
sum = n*n;
dfs(a,0,0,n,cnt);
for(int i = 0; i < n; ++i){
for(int j = 0; j < n; ++j){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
return 0;
}