题目描述:
输入正整数 n,输出一个与之对应的 n 阶回转折叠矩阵。
输入描述
多组输入,每组输入一个正整数 n,占一行,其中 n <= 500。
输出描述
输出一个 n 阶回转折叠矩阵,每列的元素之间用一个空格分开,第 1 列的前面和最后一列的后面没有多余的空格。
例如,n = 5 时的回转折叠矩阵为:
1 2 9 10 25 4 3 8 11 24 5 6 7 12 23 16 15 14 13 22 17 18 19 20 21
样例输入:
3
5
样例输出:
1 2 9 4 3 8 5 6 7 1 2 9 10 25 4 3 8 11 24 5 6 7 12 23 16 15 14 13 22 17 18 19 20 21
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int a[501][501]={0};
while(cin>>n)
{
int k=1;
a[0][0]=1;
for(int i=1;i<n;i++)
{
if((i+1)%2==0)
{
for(int j=0;j<=i;j++)
a[j][i]=++k;
for(int j=i-1;j>=0;j--)
a[i][j]=++k;
}
else
{
for(int j=0;j<=i;j++)
a[i][j]=++k;
for(int j=i-1;j>=0;j--)
a[j][i]=++k;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
}