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