算法相关:编程解“阿达连连看”,怎样模仿人的思维?
编程求解游戏阿达连连看,初步想法:(1)读入一个图标a,按一定的顺序,对可能存在匹配图标的位置向前进行遍历,发现匹配则删除两个图标。(2)如果上一步未发现匹配,读入紧挨图标a的下一个图标b,按相同的顺序向前遍历(不再遍历图标a,以免重复)。如果b与某图标c匹配,删除后,c图标处暴露新图标d,此时如果d与a匹配,按人的思维习惯,一般会马上识别出来,并将a和d删除。对于电脑,这需要在读入图标b后,图标a依然保留,并及时与新暴露的图标进行匹配查询,这增加了比较查询的负担。同样,a被删除后,又有新图标e暴露,此时可以将e与先前的一些图标进行逐个比较,这其中涉及了多重逐层嵌套的循环。
将此思路顺延展开,在对A组图标进行遍历查询时,其中的每一个图标不是与某个图标比较一次,而是与另一组(设为B)中的每一个图标逐个进行比较,要比较n次(n为B组图标中的图标个数)。这样当B组图标个数很多时,可能会明显降低程序的求解效率。多重嵌套循环中,B组的结构可能也是有层次的,增加了程序的复杂性。
人眼的视觉习惯适合于一次读入多个图标,但对于电脑,一次读入处理一个图标(也就是不引入B组),未必效率就低吧?
我是初学者,请高手指教。谢谢!