C#中,旋转的二维数组 [英] C#, rotating 2D arrays

查看:208
本文介绍了C#中,旋转的二维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看着在旋转二维数组其他职位,但它不是很我想要的。
我想是这样的。

I've looked at other post on rotating 2D arrays, but it's not quite what I want. I want something like this

 int[,] original= new int[4,2]
       {
           {1,2},
           {5,6},
           {9,10},
           {13,14}
       };

我想打开它这个样子,
    rotatedArray = {{1,5,9,13},{2,6,10,14}};
我想通过做一些列分析,按行反对。

I want to turn it like this, rotatedArray = { {1,5,9,13}, {2,6,10,14}}; I want to do some analysis by column, as opposed to by rows.

这工作,但有一个更简单的方法??

This works, but is there an easier way??

 private static int[,] RotateArray(int[,] myArray)
  {
        int org_rows = myArray.GetLength(0);
        int org_cols = myArray.GetLength(1);

        int[,] myRotate = new int[org_cols, org_rows];

        for (int i = 0; i < org_rows; i++)
        {
            for(int j = 0; j < org_cols; j++)
            {
                myRotate[j, i] = myArray[i, j];
            }
        }

        return myRotate;
    }

有没有一种简单的方法,通过在C#中的列进行迭代?结果

Is there an easy way to iterate through columns in c#?
B

推荐答案

如果你改变你的阵列是一个数组的数组变得越来越容易。我发现这个,如果你将它更改为int [] []:

If you change your array to be an array of arrays it gets easier. I found this if you change it to an int[][]:

int[][] original = new[]
                                   {
                                       new int[] {1, 2},
                                       new int[] {5, 6},
                                       new int[] {9, 10},
                                       new int[] {13, 14}
                                   };

和旋转方式:

private static int[][] Rotate(int[][] input)
{
    int length = input[0].Length;
    int[][] retVal = new int[length][];
    for(int x = 0; x < length; x++)
    {
        retVal[x] = input.Select(p => p[x]).ToArray();
    }
    return retVal;
}

这篇关于C#中,旋转的二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆