题目:有一个5*5的正方形网格,没个格子中有一个大于0且小于4的整数,对于一个确定的局面,若一个格子与它上下左右四个方向的某个格子(如果存在)数字相同,则称这两个格子是连通的,并且这种连通具有传递性。
每次,可以选择一个格子,若与这个格子连通的格子(包括自己)数大于等于3,你就可以选择消掉这个格子,与此同时,与这个格子连通的所有格子会一起消失。
如果仅仅是这样,那就太简单了,因为无论如何消除,最后的结果都是一样的,所以我们引入重力系统,每次选择消掉某个格子,并将与那个格子相连通的所有格子都消掉后将会有一些格子失去支撑,此时那些格子就会因重力而下落。
实现代码如下:
#广度优先搜索,队列实现
def findSame(arr, book, i, j, queue, front, rear, count):
#保证当前点不为0
if arr[i][j] == 0:
return
#当前节点入队
queue.append([i, j])
rear[0] = rear[0] + 1
#队列不为空时
while(front[0] != rear[0]):
#先出队