用递归求螺旋矩阵- 面壁居士- 博客园

今日,下午去上地附近一家公司面试。

笔试部分,太基础而好多写不出具体的东西。

上机部分,让写一个螺旋矩阵。想到院子里有一些脑细胞发达的人总结了什么公式,绞尽脑汁总结不出来,也回忆不起来,多重循环的那种,我有没那么好的想象力去想象,于是就用递归弄了个。 

  1 public class SpiralMatrix

 2     {
 3         private int[,] _SpiralMatrix;
 4         private int _N;
 5 
 6         public SpiralMatrix(int n)
 7         {
 8             _SpiralMatrix = new int[n, n];
 9             _N = n;
10         }
11         /// <summary>
12         /// 递归算法
13         /// </summary>
14         /// <param name="start">start:矩阵开始的位置,如为0表示矩阵[0,0]元素</param>
15         /// <param name="num">矩阵的维数</param>
16         /// <param name="begin">起始数字</param>
17         public void Computer(int start,int num,int begin)
18         {
19             if (start == num)//输入为偶数时
20             {
21                 return;
22             }
23             else if (start == num - 1)//输入为奇数时
24             {
25                 _SpiralMatrix[start, num - 1= begin;
26                 return;                
27             }
28             else
29             {
30                 for (int i = start; i < num; i++)
31                 {
32                     _SpiralMatrix[start,i] = begin;
33                     begin++;
34                 }
35                 for (int j = start + 1; j < num; j++)
36                 {
37                     _SpiralMatrix[j, num - 1= begin;
38                     begin++;
39                 }
40                 for (int k = num - 2; k >= start; k--)
41                 {
42                     _SpiralMatrix[num-1, k] = begin;
43                     begin++;
44                 }
45                 for (int l = num - 2; l >= start+1; l--)
46                 {
47                     _SpiralMatrix[l, start] = begin;
48                     begin++;
49                 }
50                 Computer(start + 1, num - 1, begin);
51             }
52         }
53 
54         /// <summary>
55         /// 字符串化,方便对象输出
56         /// </summary>
57         /// <returns>字符串后的矩阵</returns>
58         public string ToString()
59         {
60             string temp="";
61             for(int i=0;i<_N;i++)
62             {
63                 for(int j=0;j<_N;j++)
64                 {
65                     temp+=_SpiralMatrix[i,j]+" ";
66                 }
67                 temp+="\r\n";
68             }
69             return temp;
70         }
71     }

 

郑重声明:资讯 【用递归求螺旋矩阵- 面壁居士- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——