我非常抱歉标题不太恰当,但用几个词来描述我的问题有点困难。我想其余的帖子会更好地解释它!;)
描述
我基本上有一个二维数组,包含瓷砖/对象/符号,我想在特殊瓷砖分隔一组瓷砖时将其拆分成两个(或更多)新的二维数组。
例如,如果我有:
[x][x] [0] [0]
[0] [0] [x] [0]
[0] [0] [x] [0]
[0] [0] [0] [x]
其中符号 x 不需要,则应该给我两个新数组:
[x] [x] [0] [0]
[x] [x] [x] [0]
[x] [x] [x] [0]
[x] [x] [x] [x]
和
[x] [x] [x] [x]
[0] [0] [x] [x]
描述
我基本上有一个二维数组,包含瓷砖/对象/符号,我想在特殊瓷砖分隔一组瓷砖时将其拆分成两个(或更多)新的二维数组。
例如,如果我有:
[x][x] [0] [0]
[0] [0] [x] [0]
[0] [0] [x] [0]
[0] [0] [0] [x]
其中符号 x 不需要,则应该给我两个新数组:
[x] [x] [0] [0]
[x] [x] [x] [0]
[x] [x] [x] [0]
[x] [x] [x] [x]
和
[x] [x] [x] [x]
[0] [0] [x] [x]
[0][0][x][x]
[0][0][0][x]
每组相互连接的瓷砖都有一个数组。
在我的特定情况下,我将x作为null对象,其他任意对象。基本上,如果我不能从瓷砖A到达瓷砖B而不穿过空值,则这两个瓷砖是两个不同的组。
我在脑海中考虑了一段时间,最好的解决方法肯定比O(n^2)差得多,即使它们在第一次使用时有效。Flood fill似乎可以用来找到一个组,但除此之外,我不确定我能想出任何其他类似的问题来解决这个问题。
问题
所以我问的是,如果你恰好知道解决我的问题的方向和/或如何解决它。计算复杂度并不是非常重要,因为我计划不经常执行此操作,也不会在大数组上执行。尽管如此,我希望我没有碰到NP-hard问题! :3
谢谢!