hdu 2153 仙人球的残影

题目

这道题可以有两种写法:
第一种:找规律,如下:
#include <stdio.h>
int main()
{
    int n,i,j,res;
    while (scanf("%d",&n)!=EOF)
    {
        for (j=1; j<=n; j++) //首行
        {
            if (j!=n)
                printf("%3d",j);
            else{
                printf("%3d
",j);
                     res = ++j;
                }
        }
        for (i=1; i<n-1; i++)//中间行
        {
            for (j=0; j<n; j++)//中间行数值
            {
                if (j==0)//第一个
                    printf("%3d",4*(n-1)-i+1);
                else if (j==n-1)//最后一个
                  {
                      printf("%3d
",res);
                      res++;
                  }
                else  printf("   ");
            }
        }
        for (i=0; i<n; i++)//尾行
        {
            if (i!=n-1)
                printf("%3d",3*(n-1)+1-i);
            else
                printf("%3d
",2*n-1);
        }
    }
    return 0;
}

第二种:蛇形填数,如下:
#include<stdio.h>
#include<string.h>
int main()
{
    int n,i,j;
    int a[20][20];
    while(~scanf("%d",&n),n)
    {
        memset(a,0,sizeof(a));
        int t = 0;
        i = j  = 1;
        while( j < n)//第一排(向右)
            a[i][j++] = ++t;


        while( i < n)//右边一列(向下)
            a[i++][j] = ++t;
 
       while(j >1)
            a[i][j--] = ++t;


        while(i > 1)
            a[i--][j] = ++t;

        for(i = 1;i<=n;i++)
        {
            for(j = 1;j<=n ; j++)
            {
                if(a[i][j]==0)
                    printf("   ");
                else{
                    printf("%3d",a[i][j]);
                }
            }
            printf("
");
        }
    }
    return 0;
}



第一次听说蛇形填数数这个名词,所以记之。。。

原文地址:https://www.cnblogs.com/qie-wei/p/10160250.html