用递归求螺旋矩阵

本文分享了一种使用递归算法实现螺旋矩阵的方法。通过一个具体的C#代码示例,详细介绍了如何构建螺旋矩阵,并提供了完整的代码实现。该算法适用于需要生成特定模式的二维数组的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

  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      }

 

转载于:https://www.cnblogs.com/icewwn/archive/2010/06/22/1762951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值