给定一个2D数组,其中单元格被标记并组合在一起形成不同的线性形状,您将如何识别重复的形状。
0010000100000000000000000000
0010000100000000000000000000
0011100100000100000000011100
0000000100000111111000000000
0010000111100100000000000000
0110000000000001111000000000
0010000100000000000000000111
0000000001000000000011110000
0000000001111110000000000000
0010000001000000000000000000
这里我们有3个重复的形状:
1
111111个
1
111
1
答案 0 :(得分:3)
通过循环遍历单元格查找连接的1
生成的所有形状,直到找到1
,然后使用填充填充算法查找由所有连接的单元格形成的形状。你如何存储洪水填充的形状取决于你,但我假设你创建了每个形状的字符串表示。现在使用用于比较字符串的任何数千种方法来查找不同的字符串。