打印回型矩阵

n=1              n=2                          n = 3

3   2           4    3     2                15    14     13     12

0   1           5    0     1                4       3       2      11

                  6    7     8                5       0       1      10

                                                6        7       8      9

如何打印这个回型数据?

现在只实现了如何打印偶数位的,因为奇偶数的最大值不同,但是基本思路还是一样的。自己要用的可以再写。

奇数的最大值((n+1)*(n+1) - 1)在左上角,而偶数的是在右下角。

 1 private static void GetTheGUIFromCount(int v_int, ref int[,]v_arr)
 2         {
 3             int[,] lv_arry= new int[v_int+1, v_int+1];
 4 
 5             //临时行数
 6             int lv_TempRow = 0;
 7 
 8             //临时列数
 9             int lv_TempCol = 0;
10 
11             //记录当前最大没有被填充的行数
12             int lv_maxRow = 0;
13 
14             //记录当前最小没有被填充的行数
15             int lv_minRow = 0;
16 
17             //记录当前最大没有被填充的列数            
18             int lv_maxCol = 0;
19 
20             //记录当前最小没有被填充的列数            
21             int lv_minCol = 0;
22 
23             //赋值数据
24             int i = 0;
25 
26             //偶数打印,其最大值在右下角
27             if (v_int % 2 == 0)
28             {
29                 i = (v_int+1)*(v_int+1)-1;
30                 lv_TempRow = v_int;
31                 lv_TempCol = v_int;
32                 lv_maxRow = v_int;
33                 lv_maxCol = v_int;
34                 lv_arry[lv_TempRow, lv_TempCol] = i;
35                 while (i != 0)
36                 {
37                     //从右向左填充数据
38                     if (lv_TempCol == lv_maxCol && lv_TempRow == lv_maxRow)
39                     {
40                         //设置最小列数
41                         while (lv_arry[lv_TempRow, lv_minCol] != 0 && lv_minCol < v_int)
42                             lv_minCol++;
43                         while (lv_minCol < lv_TempCol)
44                         {
45                             lv_TempCol--;
46                             i--;
47                             lv_arry[lv_TempRow, lv_TempCol] = i;
48                         }
49                     }
50 
51                     //从下到上方向填充数据
52                     if (lv_TempCol == lv_minCol && lv_TempRow == lv_maxRow)
53                     {
54                         //设置最小行数
55                         while (lv_arry[lv_minRow, lv_TempCol] != 0 && lv_minRow < v_int)
56                             lv_minRow++;
57                         while (lv_minRow < lv_TempRow)
58                         {
59                             lv_TempRow--;
60                             i--;
61                             lv_arry[lv_TempRow, lv_TempCol] = i;
62                         }
63                             
64                     }
65 
66                     //从左到右填充数据
67                     if (lv_TempCol == lv_minCol && lv_TempRow == lv_minRow)
68                     {
69                         while (lv_arry[lv_TempRow, lv_maxCol] != 0 && lv_maxCol >0)
70                             lv_maxCol--;
71                         while (lv_maxCol > lv_TempCol)
72                         {
73                             lv_TempCol++;
74                             i--;
75                             lv_arry[lv_TempRow, lv_TempCol] = i;
76                         }
77                     }
78 
79                     //从上到下填充数据
80                     if (lv_TempCol == lv_maxCol && lv_TempRow == lv_minRow)
81                     {
82                         while (lv_arry[lv_maxRow, lv_TempCol] != 0 && lv_maxRow>0)
83                             lv_maxRow--;
84                         while (lv_maxRow > lv_TempRow)
85                         {
86                             lv_TempRow++;
87                             i--;
88                             lv_arry[lv_TempRow, lv_TempCol] = i;
89                         }
90                     }
91                 }
92             }
93 
94             v_arr = lv_arry;            
95         }
 
原文地址:https://www.cnblogs.com/alexzp/p/3360852.html