How to count groups of same cells in a 2d array?

后端 未结 3 811
清酒与你
清酒与你 2020-12-31 14:08

Here\'s the example (counting black ones):

input:

\"enter

output:

相关标签:
3条回答
  • 2020-12-31 14:26

    At the beginning, each cell be "unvisited".

    I would iterate through the cells until you meet an "unvisited" black cell. Each white cell you hit up to that point

    Once you hit a black cell, you "expand" it to all directions if possible (similar to "floodfilling"). You expand as long as you can and mark all the visited cells as "visited". After you did that, you count how many black cells you infected, and you know how big the group was. After detecting the group, you go on to the next "unvisited" black cell.

    0 讨论(0)
  • 2020-12-31 14:27

    You can use algorithm for connected component labeling with 4-connectivity

    0 讨论(0)
  • 2020-12-31 14:40

    Set all black squares as nodes. Connection between black squares (if the squares are next to each other) will be an edge.

    This gives you a graph.

    A DFS in the graph will get you all the groups. Note that DFS is recursive by nature.

    0 讨论(0)
提交回复
热议问题