解释下面的连续数字数组

时间:2015-11-02 20:49:30

标签: c# .net arrays algorithm

我有下面的例子,它打印一个连续数字的二维数组。

我的问题是我应该如何确定乘以 i 的数字 在下面的示例中(在这种情况下 3 ),以便打印连续数字的数组。

似乎总是i * [数组的第二维的长度] + j。

如果需要更多说明,请告诉我

    public class test
{

    static void Main(string[] args)
    {
        populate();
        Console.ReadKey();
    }


    public static void populate()
    {
        int[,] matrix = new int[4, 3];

        for (int i = 0; i < matrix.GetLength(0); i++)
        {
            for (int j = 0; j < matrix.GetLength(1); j++)
            {
                matrix[i, j] = i * 3 + j;
            }
        }


        for (int i = 0; i < matrix.GetLength(0); i++)
        {
            for (int j = 0; j < matrix.GetLength(1); j++)
            {
                System.Console.WriteLine(matrix[i, j]);
            }
        }
    }

}

1 个答案:

答案 0 :(得分:1)

所以,大概这个想法最终会得到:

        | 0   1   2  <-- j
        ------------
      0 | 0,  1,  2
i ->  1 | 3,  4,  5
      2 | 6,  7,  8
      3 | 9, 10, 11 

所以这是简单的数学。您的列为j,您的行为ij将运行0,1,2。所以在你需要的第一行(i == 0):

0 * 3 + 0 = 0,  0 * 3 + 1 = 1,  0 * 3 + 2 = 2

现在为您的下一行(i==1),您需要从3 开始,然后将j添加到其中。所以你得到:

1 * 3 + 0 = 3,  1 * 3 + 1 = 4,  1 * 3 + 2 = 5

对于第三行(i==2),您需要从6开始,这只是行序数(2)乘以每行的宽度( 3),所以你得到:

2 * 3 + 0 = 6,  2 * 3 + 1 = 7,  2 * 3 + 2 = 8

现在,如果您的桌子更宽,而您需要,例如:

0,  1,  2,  3
4,  5,  6,  7
...

我希望现在很明显你的公式需要:

i * 4 + j

所以,是的,你乘以的数字是每行的宽度。这与第二个数组维度的长度相同。所以你可以把你的公式变成:

i * matrix.GetLength(1) * j