Как разделить и подсчитать кластеры (4 связанных компонента направления) в 2D-массиве?
for example, I have 2d array like this: 1 2 2 2 2 1 1 1 1 2 1 1 2 1 1 1 2 1 2 2 1 1 2 1 2 2 1 2 1 1 2 2 2 2 1 1 1 1 1 2 1 2 1 2 2 1 1 2 1 1 2 1 2 1 2 1 2 2 2 2 1 1 2 2 2 2 1 2 1 2 1 1 2 1 1 2 1 1 2 2 1 1 1 2 And I want to label the connected components (4 directions)to be like this: 1 2 2 2 2 3 3 3 3 4 5 5 6 7 7 7 2 3 8 8 3 3 9 5 6 6 7 10 3 3 8 8 8 8 5 5 7 7 7 10 3 11 12 8 8 5 5 8 7 7 13 14 13 15 16 17 8 8 8 8 7 7 13 13 13 13 18 19 20 8 20 20 21 7 7 13 22 22 19 19 20 20 20 23 the way to label the clusters is like the flood fill, if it connects to their neighbor by up-down-left-right direction, they will be grouping in the same cluster. we go from top left to bottom right. Please help me solve this problem. Thanks!!!(javascript code example would be great)
Что я уже пробовал:
Я делаю 2 петли для row и col, затем для каждого элемента проверяю направления, чтобы увидеть, совпадают ли их соседи, а затем группирую их. но у меня всегда возникает конфликт, когда я делаю это таким образом, поскольку в конечном итоге считаю новый кластер, но это число уже принадлежит предыдущему кластеру.