C# 查找并返回给定2D数组的所有循环
我有一个C# 查找并返回给定2D数组的所有循环,c#,arrays,multidimensional-array,cycle,C#,Arrays,Multidimensional Array,Cycle,我有一个int[,]2D数组,表示坐标系中的房子。每个索引都是一种表示构建块的枚举类型,例如none=0、wall=1、stairs=2。我对这个问题唯一感兴趣的部分是墙 所以问题是,给定一个尺寸为NxM的二维数组,带有这样的标记槽 //red circles represent array[i][k] == wall 我需要在多项式时间内检测网格中有多少个房间。 所以结果是这样的, 如果找到房间,所需的算法将返回包含每面墙位置的列表数组 所以我要找的是函数“findRooms” str
int[,]
2D数组,表示坐标系中的房子。每个索引都是一种表示构建块的枚举类型,例如none=0、wall=1、stairs=2。我对这个问题唯一感兴趣的部分是墙
所以问题是,给定一个尺寸为NxM的二维数组,带有这样的标记槽
//red circles represent
array[i][k] == wall
我需要在多项式时间内检测网格中有多少个房间。
所以结果是这样的,
如果找到房间,所需的算法将返回包含每面墙位置的列表数组
所以我要找的是函数“findRooms”
struct位置
{
int x,y;
}
教室
{
列表墙;
公共房间{};
}
课堂
{
int[,]网格;
//
//需要实现的功能
//
公共列表FindRoom(int[,]网格)
{
//给定二维网格,将返回房间列表。
返回室;
}
}
我曾想过将网格表示为一个图,并在图中找到所有的循环,但我觉得这过于复杂了
使用中的一个例子可能是Terria的建筑系统
如果有人能解释一下这个问题,我将不胜感激。您可以查看洪水填充算法:
谢谢,我会试试看,如果我能成功,我会接受你的回答
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;
}
}