【Description】
There are four matrixs blow , Can you image the NEXT matrix from thegiven information?
【Input】
Thefirst line is a integer which represents the case number .
Foreach test case , there will be a line which contains a integer N(1<=N<=100).
【Output】
Output the matrix which has N*N integers. Be careful that there is ablank space between two integer but no blank space after the last integer in aline.
【Sample Input】
4
1
2
3
4
【Sample Output】
1
1 2
4 3
1 2 3
8 7 4
9 6 5
1 2 3 4
12 11 10 5
13 14 9 6
16 15 8 7
#include<iostream>
#include<cstdio>
using namespace std;
#define MAX(a,b) ((a)>(b) ? (a):(b))
#define MIN(a,b) ((a)<(b) ? (a):(b))
int a[102][102];
void Dealr(int x,int y,int m,int n)
{
int i;
for(i=y;m!=n+1;i++) a[x][i]=m++;
}
void Deald(int x,int y,int m,int n)
{
int i;
for(i=x;m!=n+1;i++) a[i][y]=m++;
}
void Dealu(int x,int y,int m,int n)
{
int i;
for(i=x;m!=n+1;i--) a[i][y]=m++;
}
void Deall(int x,int y,int m,int n)
{
int i;
for(i=y;m!=n+1;i--) a[x][i]=m++;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,i,j,t1,t2;
scanf("%d",&n);
t1=1; t2=n;
Dealr(1,1,t1,t2);
t1+=n-1; t2+=n-1;
Deald(1,n,t1,t2);
t1+=n; t2+=n-1;
for(i=2;i<n;i++)
{
if(i%2)
{
Dealr(i,1,t1,t2);
t1+=n-i; t2+=n-i;
Deald(i,n-i+1,t1,t2);
t1+=n-i+1; t2+=n-i;
}
else
{
Dealu(n,n-i+1,t1,t2);
t1+=n-i; t2+=n-i;
Deall(i,n-i+1,t1,t2);
t1+=n-i+1; t2+=n-i;
}
}
a[n][1]=n*n;
for(i=1;i<=n;i++)
{
for(j=1;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("%d\n",a[i][n]);
}
}
return 0;
}