将较小的阵列复制到较大的阵列中

时间:2015-01-22 12:42:03

标签: c#

我努力想到最优雅/最简单的做法。也许我会稍微过度思考它。

让我们说我有一个5x5的整数数组,如下所示:

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

另一个2x2整数数组,如下所示:

5 1
2 3

我想在5x5数组中选择一个位置,比如说[2] [2],然后将第二个数组中的值放到第一个数组中,所以它看起来像这样:

0 0 0 0 0
0 0 0 0 0
0 0 5 1 0
0 0 2 3 0
0 0 0 0 0

我最初的想法是在确定要复制的数组中的行数/列数之后使用for循环,但是我似乎无法在今天早上解决这个问题。< / p>

有什么建议吗?

编辑:

对不起,这就是我目前的做法。只是想知道是否有更好的方式。

这实际上是我正在做的事情的一部分 - &#34; RoomDoors&#34;是我们较小的阵列,&#34; map&#34;是它被移入的更大阵列。它是随机地图生成器的一部分,需要知道哪些&#34;边缘&#34;房间里的瓷砖上有门,可以连接到其他房间。 RoomDoors存放4个布尔值,每个方向一个,告诉我那里是否有门。

    roomDoors = previousRoom.GetComponent<RoomDataInterface> ().rooms; //2d array of room/door arrangement in new room
    sizeCol = roomDoors.GetLength (0);
    sizeRow = roomDoors.GetLength (1);
    map [10, 10] = roomDoors [0, 0]; // top left of the room goes in the spot
    for (int i = 0; i < sizeCol; i ++){
        for (int j = 0; j < sizeRow; j ++) {
            map [i + 10,j + 10] = roomDoors[i,j];
        }

2 个答案:

答案 0 :(得分:2)

我认为你可以做得更好,只需删除不必要的任务:

roomDoors = previousRoom.GetComponent<RoomDataInterface> ().rooms;
sizeCol = roomDoors.GetLength (0);
sizeRow = roomDoors.GetLength (1);
for (int i = 0; i < sizeCol; i ++)
  for (int j = 0; j < sizeRow; j ++) 
    map [i + 10, j + 10] = roomDoors[i, j];

答案 1 :(得分:1)

该行

map [10, 10] = roomDoors [0, 0];

是多余的,因为循环的第一次迭代将执行相同的赋值。删除线将导致解决方案更小,更有效。