合工大 OJ 1332 蛇形阵

Description

蛇形针回字阵:

3*3:   

 回字阵:

   7 6 5

   8 1 4

   9 2 3

Input

多组数据:

每一行一个正整数n(n为奇数,<26),代表n*n矩阵。

Output

输出回字阵(字段宽度为4).

 

Sample Input

5

Sample Output

 21  20  19  18  17
  22   7   6   5  16
  23   8   1   4  15
  24   9   2   3  14
  25  10  11  12  13

Source

新生杯
 
 
 1 #include<iostream>
 2 #include <cstdio> 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n;
 8     while(cin>>n)
 9     {
10         int a[n][n];
11         for(int i=0;i<n;i++)
12             for(int j=0;j<n;j++)
13                 a[i][j]=0;
14                 
15         for(int i=0;i<n;i++)//对角线初始化 
16             a[i][i]=(n-i*2)*(n-i*2)-(n-i*2-1);
17          
18         for(int i=0;i<n;i++)//根据对角线填入数字(左上部分) 
19         {
20             for(int j=1+i;j<n-i-1;j++)//上边部分 
21                 a[i][j]=a[i][j-1]-1;
22             for(int j=1+i;j<n-i;j++)//左边部分 
23                 a[j][i]=a[j-1][i]+1;
24         } 
25          
26          for(int i=n-1;i>=0;i--)//根据对角线填入数字(右下部分) 
27          {
28              for(int j=n-(n-i+1);j>=n-1-i;j--)//右边部分 
29                  a[j][i]=a[j+1][i]+1;
30              for(int j=n-(n-i+1);j>=n-i;j--)//下边部分 
31                  a[i][j]=a[i][j+1]-1;
32         } 
33         
34         for(int i=0;i<n;i++)
35         {
36             for(int j=0;j<n;j++)
37             {
38                 printf("%4d",a[i][j]);
39             }
40             cout<<endl;
41         }    
42     }
43     return 0;
44 }
 
原文地址:https://www.cnblogs.com/wixy/p/5492448.html