我有一个int[,]
2D数组,表示坐标系中的房子。每个索引都是一种表示构造块的枚举,例如none = 0,wall = 1,stairs = 2。我对这个问题感兴趣的唯一部分是墙壁。
所以问题是,给定一个大小为NxM的2D数组,带有这样的标记插槽;
//red circles represent
array[i][k] == wall
我需要在多项式时间内检测网格中有多少个房间。 所以结果就是这样,
如果找到房间,所需的算法将返回包含每个墙的位置的列表数组。
所以我正在寻找的是“findRooms”函数
struct position
{
int x,y;
}
class Room
{
List<position> walls;
public Room(){};
}
class Floor
{
int[,] grid;
//
// The function that's needed to be implemented
//
public List<Room> findRooms(int[,] grid)
{
// given a 2D grid returns a list of rooms.
return Rooms;
}
}
我想把网格表示为图形并找到图形中的所有周期,但我觉得这已经过去使它们已经复杂化了。
使用它的一个例子可能是terraria的建筑系统。
如果有人能对这个问题有所了解,我真的很感激。