Write a routine that prints out a 2-D array in spiral order

本文介绍了一种方法,通过螺旋顺序打印二维数组中的元素,包括处理奇数维度的情况。

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

我的理解,给定2维数组
1 2 3三角形判断
8 9 4
7 6 5

“螺旋式”顺序输出:1 2 3 4 5 6 7 8 9


   private   static   void  PrintNumberasSpiralOrder()
          {
             // 1  2  3   4
             // 12 13 14  5
             // 11 16 15  6
             // 10 9   8  7
            
             // 1,  2 , 3,  4,  5
             // 16, 17, 18, 19, 6
             // 15, 24, 25, 20, 7
             // 14, 23, 22, 21, 8
             // 13, 12, 11, 10, 9 
              int [,] a  =   new   int [,]
              {   {  1 ,  2 ,  3 ,  4 ,  5  } , 
              {  16 ,  17 ,  18 ,  19 ,  6  } , 
              {  15 ,  24 ,  25 ,  20 ,  7  } ,
              {  14 ,  23 ,  22 ,  21 ,  8  } ,
              {  13 ,  12 ,  11 ,  10 ,  9  }  } ;
             // int[,] a = new int[,] { { 1, 2, 3, 4 }, { 12, 13, 14, 5 }, { 11, 16, 15, 6 }, { 10, 9, 8, 7 } };
             // int[,] a = new int[,] { { 1, 2 }, {4,3} }; 
              const   int  N  =   5 ;
             //  spiral 
              for  ( int  i  =  N  -   1 , j  =   0 ; i  >   0 ; i -- , j ++ )
              {
                 // i 从最大维度数开始
                 // j 从最小维度数开始
                 // i--来缩小范围
                 // j++来缩小范围
                 // k 增长缩小因子 
                  for  ( int  k  =  j; k  <  i; k ++ )
                    System.Console.Write( " {0}  " , a[j, k]); Console.WriteLine( "" );
                 for  ( int  k  =  j; k  <  i; k ++ )
                    System.Console.Write( " {0}  " , a[k, i]); Console.WriteLine( "" );
                 for  ( int  k  =  i; k  >  j; k -- )
                    System.Console.Write( " {0}  " , a[i, k]); Console.WriteLine( "" );
                 for  ( int  k  =  i; k  >  j; k -- )
                    System.Console.Write( " {0}  " , a[k, j]); Console.WriteLine( "" );
            } 
             //  special case for middle element if N is odd
             // 如果是奇数,则要条印中间的数。 
              if  (N  %   2   ==   1 ) System.Console.Write(a[(N  -   1 )  /   2 , (N  -   1 )  /   2 ]);
        } 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值