View Code of Problem 1083

#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.


Back to problem 1083