1

我正在寻找一种有效的算法,可以给我随机形状的所有边缘。我可以写一个,但是如果有人知道可以优化的现有解决方案,将不胜感激,因为这将在手机上运行:)

示例形状:

=====     ==========
=====     \=========
====/      \\     
===/        \\
==/          =======
=/           =======
====================
             =======
             =======
=====\       =======
======\     /=======

对于左上角,我需要可以有效地给我的数据:[ 0%, 0% ], [ 25%, 0% ]

4

1 回答 1

0

似乎没有比嵌套循环和字符检查更优化的了。我可能是错的,但这就是我要开始的地方。

for ( i = 0; i < rows; i++ ){
   for (j = 0; j < cols; j++ ){
      if character[i][j] === '/' or '|' or '\'  or '-'
         // Edge-Found logic.
   }
}

编辑

我撤销我之前的回答。我想了更多,您可以通过在第一个找到的字符边的实例处停止迭代并在该点周围的所有直接节点中搜索另一边来进一步优化。冲洗并重复,直到你一直努力回到起始边缘。这个问题很容易递归,并通过在映射形状的同时创建链表来打开编程选项的世界。

让我想起了计算机科学二年级的一些鼠标迷宫问题。很好的问题——很高兴时不时地看到有趣的问题!:D

另外 - 对于其他任何好奇的人,您可以查看“图论”来解决各种像这样的很酷的问题。它基本上是互联网、谷歌地图和各种其他很酷的数据库应用程序的动力(例如,它是 FaceBook 数据库背后的理论,几乎单枪匹马地负责他们的服务速度……听说过OpenGraph吗?)

于 2011-12-31T01:50:29.810 回答