逻辑数学拼图 - 帮助我解决这个问题 - C ++

时间:2016-11-30 22:15:17

标签: c++ arrays math logic processing-efficiency

我有以下C ++数组:int arr[20][20]填充了1到5之间的数字

特定元素,例如arr [5] [8]被设置为起点

我必须找到数组中的所有元素,它们具有相同的值并且是“触摸”(vert / horiz)起点

我可以通过三个for循环搜索数组,但是这会导致20 * 20 + 20 * 2 = 1600个数组的位移

我希望我能够很好地解释这个问题,以便你理解

i.stack.imgur.com/j3e0e.jpg

应找到所有红色标记的元素

1 个答案:

答案 0 :(得分:0)

如果使用Union Find算法,可以使用接近线性的时间。 看看这个: http://algs4.cs.princeton.edu/15uf/UF.java.html