如何在保持某些瓷砖相对位置完好的同时将8x8网格尺寸加倍?

时间:2010-04-26 09:50:48

标签: java arrays algorithm

我的网格尺寸为8x8,总共64个瓷砖。

我正在使用此网格来实现Java搜索算法,例如BFS和DFS。

Grid已经给出了禁止的Tiles(意味着它们不能被遍历或者是任何其他tile的邻居)以及Goal和Start tile。例如,当程序运行时,Tile 19,20,21,22 and 35, 52 被禁止, 14 an 43 Goalstart Tile。

我的问题是,如何将网格的大小加倍,16x16同时保持Relative position of forbidden tiles以及Relative position of start and goal Tiles完好无损?

通过简单地声明一个grid[16][16]禁止图块的数组,目标和起始图块不再处于相对位置,因为它们的网格大小为8x8。

在纸面上,我知道我可以通过添加4 rows and columns to all sides来实现这一点,但在编码方面,我不知道如何使其工作?有人可以提供任何提示吗?

2 个答案:

答案 0 :(得分:0)

数组在Java中不可调整大小,您需要做的是分配一个具有所需维度的新数组并将数据复制到其中。

例如,如果您希望旧地图位于新地图的中心:

Tile[][] newMap = new Tile[16][16];

for (int i=0; i<8; i++)
  for (int j=0; j<8; j++) 
    newMap[i+4][j+4] = oldMap[i][j];

但你仍然需要将其他瓷砖初始化为其他东西。

答案 1 :(得分:0)

一些简单的事情可能是将元素放在(i,j)旧网格中(2i,2j)中的新元素......将保留瓷砖的相对位置......