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,输出如上所示N*N矩阵。
代码:
#include<stdio.h>
#include<iostream>
using namespace std;
int m[100][100];
int main()
{
int N;
int cnt;
while(scanf("%d",&N)!=EOF)
{
cnt = 0;
for(int i=0; i<N/2; ++i)
{
for(int j=i; j<N-1-i; ++j)
m[i][j]=++cnt;
for(int j=i; j<N-1-i; ++j)
m[j][N-1-i] = ++cnt;
for(int j=N-1-i; j>i; --j)
m[N-1-i][j] = ++cnt;
for(int j=N-1-i; j>i; --j)
m[j][i] = ++cnt;
}
if(N%2==1)
m[N/2][N/2] = ++cnt;
for(int i=0; i<N; ++i)
{
for(int j=0; j<N; ++j)
printf("%d ",m[i][j]);
printf("\n");
}
}
return 0;
}