给定具有标记单元的2D阵列,找到由那些标记的单元形成的重复形状

时间:2013-07-17 14:45:39

标签: c algorithm data-structures multidimensional-array shapes

给定一个2D数组,其中单元格被标记并组合在一起形成不同的线性形状,您将如何识别重复的形状。

0010000100000000000000000000
0010000100000000000000000000
0011100100000100000000011100
0000000100000111111000000000
0010000111100100000000000000
0110000000000001111000000000
0010000100000000000000000111
0000000001000000000011110000
0000000001111110000000000000
0010000001000000000000000000

这里我们有3个重复的形状:
1
111111个
1

111

1

1 个答案:

答案 0 :(得分:3)

通过循环遍历单元格查找连接的1生成的所有形状,直到找到1,然后使用填充填充算法查找由所有连接的单元格形成的形状。你如何存储洪水填充的形状取决于你,但我假设你创建了每个形状的字符串表示。现在使用用于比较字符串的任何数千种方法来查找不同的字符串。