如题,最近脑残附体,求一算法输入一个人任意矩阵例如[x,y]:a b c d e f
g h i j k l
m n o p q r
s t u v w x要求输出: agms bcdef hnt ijkl ou pqr v wx就是那种 先竖再横 的循环,感冒了,都僵持30分钟了求活力支持
算法

解决方案 »

  1.   

    可发现规律a h o v是一组中心点,连成对角斜线,只要确定斜线上的点就可以对应输出组
     
      

  2.   

    n, n, n, n, n, n
    n, n, n, n, n, n
    n, n, n, n, n, n
    n, n, n, n, n, n
    n, n, n, n, n, n
    n, n, n, n, n, n不就是这样的规律吗?自己写
      

  3.   

    就像前面几位说的,确定了首位位置,后面循环很简单了a[0][0] a[1][1] a[2][2]..............
      

  4.   


            static void Main(string[] args)
            {            char[][] arry = new char[][] { new char[]{'a','b','c','d','e','f'},
                                               new char[]{'g','h','i','j','k','l'},
                                               new char[]{'m','n','o','p','q','r'},
                                               new char[]{'s','t','u','v','w','x'} };            Print(arry, 0, 0, true);
                            Console.ReadLine();
            }        private static void Print(char[][] arry, int row, int col, bool bIsCol)
            {
                if (bIsCol)
                {
                    for (int i = row; i < arry.Length; i++)
                        Console.Write(arry[i][col]);
                    Console.WriteLine("");                if (col + 1 < arry[0].Length && row < arry.Length)
                        Print(arry, row, col + 1, !bIsCol);
                }
                else
                {
                    for (int i = col; i < arry[row].Length; i++)
                        Console.Write(arry[row][i]);
                    Console.WriteLine("");                if (row + 1 < arry.Length && col < arry[0].Length)
                        Print(arry, row + 1, col, !bIsCol);
                }        }输出结果:
    agms
    bcde
    hnt
    ijkl
    ou
    pqr
    v
    wx