Visual studio 2010 二维数组-查找表

Visual studio 2010 二维数组-查找表,visual-studio-2010,c#-4.0,state,Visual Studio 2010,C# 4.0,State,我正在为在房间地板上移动的机器人编写代码(考虑地板的中心是原点(0,0))。机器人可以向任何方向(南、东、西、北)移动,接触地板上的不同顶点。我想知道它接触了多少个独特的顶点。 为此,我使用了一个动态2D数组来记录每个存储顶点的接触。这样的逻辑…如果机器人碰到一个顶点,该顶点将在数组中被检查。如果它在那里,我不增加我的计数器。最后,我将获得所有唯一的顶点 有没有其他更好的方法来找到机器人触摸的唯一顶点 谢谢 我正在用C#编写代码。地板的尺寸x轴(-1,00000到1,00000),y轴(-1,0

我正在为在房间地板上移动的机器人编写代码(考虑地板的中心是原点(0,0))。机器人可以向任何方向(南、东、西、北)移动,接触地板上的不同顶点。我想知道它接触了多少个独特的顶点。 为此,我使用了一个动态2D数组来记录每个存储顶点的接触。这样的逻辑…如果机器人碰到一个顶点,该顶点将在数组中被检查。如果它在那里,我不增加我的计数器。最后,我将获得所有唯一的顶点

有没有其他更好的方法来找到机器人触摸的唯一顶点

谢谢


我正在用C#编写代码。地板的尺寸x轴(-1,00000到1,00000),y轴(-1,00000到1,00000)

它取决于地板的尺寸。如果它很小,那么您的方法可能是最好的。或者,如果地板尺寸太大,无法在内存中保存完整的地图,则使用关联数组(或C#中的任何等效数组),将顶点坐标作为键,并使用简单的布尔值作为值,这将只记录实际访问的顶点。

感谢您的回复。楼层x轴的大小(-1,00000到1,00000),y轴的大小(-1,00000到1,00000)。假设这意味着十万(如果是一百万,甚至更多),您可能应该使用稀疏列表(关联数组)选项。Srilak,感谢您的回复。如果使用关联数组,我们需要对数组中的元素进行多次迭代,以检查是否访问。假设Robot向东移动了100000步,在关联数组中创建了100000个条目。您可以始终使用链表/哈希表或任何其他稀疏存储数据结构。不管怎样,您都必须存储100000条数据。如果您的关联数组已经在该大小存在问题,那么200000x200000网格只会更糟糕。但记忆是个问题吗?在我看来,即使在64位机器上,也应该只占用1.5Mb左右。如果内存是一个制约因素(例如为手机/嵌入式系统开发),那么你就必须开始想象并开始进行位挤压。实际上,忘记位挤压。考虑这个问题。机器人从中心开始,向外螺旋移动。最终,它将访问每个顶点一次,即最坏情况。你最好的办法是存储机器人所做的动作,并对它们进行游程编码。然后编写一个函数,检查特定顶点是否位于机器人所遍历的顶点中。您可以将整个内容封装在一个类中,并使其功能类似于一个集合。当然,查找功能是痛苦的,但存储的好处是巨大的。