#include <iostream> #include<cstdio> #include<cstring> #include<queue> #include<stack> #define M 25 #define INF 0x7fffffff typedef long long ll; using namespace std; int n; int num[M][M]; void solve() { memset(num,-1,sizeof(num)); int i,j,t=1,t1,t2; for(i=1; i<=n+1; ++i) { int x,k=0; if(i&1) //若为奇数组则首项为n+i, { x=n+i; t1=x; num[i][k++]=t1; for(j=0; j<i-1; ++j) { x-=2; t1=x; num[i][k++]=t1; } } else //偶数组则首项为n-i+2 { x=n-i+2; t2=x; num[i][k++]=t2; for(j=0; j<i-1; ++j) { x+=2; t2=x; num[i][k++]=t2; } } } for(i=2;i<=n+1;++i){ for(j=0;num[i][j]!=-1;++j){ // printf("%d",) if(t%20==0)printf("%d\n",num[i][j]); else printf("%d ",num[i][j]); t++; } } if(t%20==0) printf("\n%d",num[n][0]); else printf("%d",num[n][0]); for(i=n;i>=1;--i) { for(j=0;num[i][j]!=-1;++j) { if(i==n&&j==0) continue; if(t%20==0)printf("\n%d",num[i][j]); else printf(" %d",num[i][j]); t++; } } printf("\n"); } int main() { // freopen("xx.in","r",stdin); // freopen("xx.out","w",stdout); while(scanf("%d",&n),n) { // printf("%d=\n",n); solve(); } //cout << "Hello world!" << endl; return 0; } |
Double click to view unformatted code.