二维阵列宽度长度和坐标

时间:2016-08-29 09:49:19

标签: c# arrays multidimensional-array

我从在线求职申请中得到了这个测试,我对二维阵列没有任何经验。

  1. 正数整数范围1-9,表示您所在城市的城市长度
  2. 正数整数范围1-9表示您所在城市街区​​的宽度
  3. 包含代表Locker位置的所有X坐标的数组,每个X坐标范围1-9
  4. 包含表示Locker位置的所有Y坐标的数组,每个Y坐标范围1-9
  5. 构建城市的二维网格。网格的每个元素应该是一个正整数,用于指定最近的储物柜的块数。两个块之间的距离是它们的水平和垂直距离的总和(因此,对角线方向上的移动被认为是2的距离)。将网格返回为2d整数数组,其中第一个索引对应于X维度,第二个索引对应于Y方向。

    Example #1
    
    Input
    1. 3
    2. 5
    3. [1]
    4. [1]
    
    Output
    012
    123
    234
    345
    456
    
    Example #2
    
    Input
    1. 5
    2. 7
    3. [2, 4]
    4. [3, 7]
    
    Output
    32345
    21234
    10123
    21234
    32323
    43212
    32101
    
    
    static int[][] getLockerDistanceGrid(int cityLength, int cityWidth, int[] lockerXCoordinates, int[] lockerYCoordinates) {
    
    }
    

1 个答案:

答案 0 :(得分:1)

试试这个:

static int[,] getLockerDistanceGrid(int cityLength, int cityWidth, int[] lockerXCoordinates, int[] lockerYCoordinates){
int[,] array = new int[cityWidth,cityLength];
for(int i = 0; i < cityLength; i++)
{
    for(int j = 0; j < cityWidth; j++)
    {
        int value = Math.Abs(i - (lockerXCoordinates[0]-1)) +
            Math.Abs(j - (lockerYCoordinates[0]-1));
        for(int k = 1; k < lockerXCoordinates.Count(); k++)
        {
            int current = Math.Abs(i - (lockerXCoordinates[k]-1)) + Math.Abs(j - (lockerYCoordinates[k]-1));
            value = Math.Min(value,current);
        }
        array[j,i] = value;
    }
}
return array;
}