使用状态对对象的二维数组进行排序

时间:2018-05-29 13:40:41

标签: arrays algorithm typescript sorting

我有一些具有某种状态的对象,就像这里一样。

1 1 1 1 0 1
1 0 1 1 0 1
0 0 1 1 0 0
x x x x x x
0 0 1 1 0 0
0 0 1 1 0 0
1 0 0 0 0 1
1 1 1 1 1 1

x是对象的差异状态,我想将状态更改为2,所有1个触摸x和其他1个触摸1触摸x等等。所以我的结果应该是这样的。

2 2 2 2 0 1
2 0 2 2 0 1
0 0 2 2 0 0
x x x x x x
0 0 2 2 0 0
0 0 2 2 0 0
1 0 0 0 0 1
1 1 1 1 1 1

实际上我想返回应该从1更改为2的对象数组。 我虽然关于递归函数,函数会检查触摸对象状态是否等于1,如果它是更改状态并执行它以触摸状态为1的对象。我无法想象这个函数可能看起来如何,我从未使用过递归:/

如果重要的话我正在使用TypeScript。

对我来说,你的帮助将是圣杯。

1 个答案:

答案 0 :(得分:0)

您需要从x单元格开始Flood fill

递归实现非常简单(四向连接):

Flood-fill (node, target-color, replacement-color):
 1. If target-color is equal to replacement-color, return.
 2. If the color of node is not equal to target-color, return.
 3. Set the color of node to replacement-color.
 4. Perform Flood-fill (one step to the south of node, target-color, replacement-color).
    Perform Flood-fill (one step to the north of node, target-color, replacement-color).
    Perform Flood-fill (one step to the west of node, target-color, replacement-color).
    Perform Flood-fill (one step to the east of node, target-color, replacement-color).
 5. Return.

但也存在非递归实现。