大牛们,小生不才 请教一个算法问题

大牛们,小生不才。
如图,灰色为我刚移动玩的方块,如何去遍历绿线这4个节点?只要能连成3个,我就要记录起来,最好就是全部节点都做一次这样的遍历,就是没移动一次,能把这25个连接的组反馈给我?请问有什么方法?

从某个点开始对这个点进行上下左右的递归搜索,类型一样的保存在一起

全局循环二十五个方块(其实都不需要二十五),然后判断其上下左右,如果是符合条件的,则继续判断这个点的上下左右,直到全部结束或者没有相同的了。根据条件设计其标记,是否需要判定。大于等于三的则用数据结构存起来。
注意一下边界节点和判定过的节点判断。

问题就是在于,我遍历完出来了,合并后,上面的方块下来,再去生成个新的数字在对于的空位,再去循环看有没有可以合并的方块,这里就要全局遍历了呀

全局是最稳的,我做过一个三消的,就是每一次新的生成之后就全局的遍历一次。

大佬,方面给个git参考下吗?

顶一下,这种寻路应该怎么做?

老公司的代码,内部的没有git,大概思路就是四方向判断。你这个和三消一样不涉及寻路,每一步移动的时候判定一下是否可移动,然后做合并,合并完成涉及到新地图的生成,再做全局的遍历判定,以此类推直到没有可执行的。如果涉及到性能可以考虑分帧运算。
四方向思路我当时用的二维数组,x,y表示横竖坐标,上就是(x,y-1),下就是(x,y+1)左(x-1,y)右(x+1,y)。然后对于边界做一下处理。

Breadth-First-Search 广度优先遍历或者类似的A*算法就能解决这个问题啊。

建议看一下递归是啥

1赞

递归没错的