今日,下午去上地附近一家公司面试。
笔试部分,太基础而好多写不出具体的东西。
上机部分,让写一个螺旋矩阵。想到院子里有一些脑细胞发达的人总结了什么公式,绞尽脑汁总结不出来,也回忆不起来,多重循环的那种,我有没那么好的想象力去想象,于是就用递归弄了个。
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 }
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 }