首页 > 代码库 > 24:蛇形填充数组

24:蛇形填充数组

24:蛇形填充数组

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。

蛇形填充方法为:

对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。

比如n=4时,方阵填充为如下形式:

1  2  6  7
3  5  8  13
4  9  12 14
10 11 15 16
输入
输入一个不大于10的正整数n,表示方阵的行数。
输出
输出该方阵,相邻两个元素之间用单个空格间隔。
样例输入
4
样例输出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
  • 查看
  •  
  • 提交
  •  
  • 统计
  •  
  • 提问
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string>
     4 #include<cstring>
     5 using namespace std;
     6 int a[101][101];
     7 int main()
     8 {
     9     int n,t=0;
    10     cin>>n;
    11     for(int k=1;k<=n*2-1;k++)
    12      {
    13          if(k%2!=0)//奇对角线; 
    14           {
    15               for(int i=n;i>=1;i--)
    16                {
    17                    for(int j=1;j<=n;j++)
    18                     {
    19                         if(i+j-1==k)
    20                          {
    21                              a[i][j]=++t;
    22                          }
    23                     }
    24                }
    25           }
    26           if(k%2==0)
    27            {
    28            for(int i=1;i<=n;i++)
    29                {
    30                    for(int j=1;j<=n;j++)
    31                     {
    32                         if(i+j-1==k)
    33                          {
    34                              a[i][j]=++t;
    35                          }
    36                          
    37                          }
    38                          }
    39      }
    40      }
    41      for(int i=1;i<=n;i++)
    42       {
    43           for(int j=1;j<=n;j++)
    44            {
    45                cout<<a[i][j];
    46                cout<<" ";
    47            }
    48            cout<<endl;
    49       }
    50 }

     

24:蛇形填充数组