国庆期间三国杀移动版公众号搞了个网页游戏曹瞒走华容,通关可以奖励史诗宝珠,还有一堆宝箱。一开始20关比较简单,眼睛看看很快就能搞定,但是30关之后难度明显上去了,当步数增加到13以上很难一次性搞定,而一天就5条命,基本不够用。想想华容道这种规则简单的游戏,计算机穷举一下分分钟就搞定了,写个迭代程序也就个把小时,就当连个手。
华容道的规则我就不说了,小学就玩过了,下面说一下建模,界面长这样:
整个区域是一个6x6的正方形,可以用二维数组表示,横的长方形只能横向移动,用负数表示,同一行内如果有多个横向长方形,依次为-1,-2,-3…,哪个是-1无所谓,只要不同长方形数字不一样就行。目的是为了防止拼在一起无法辨认是一个还是2个。竖的长方形只能纵向移动,用正数表示,同一列有多个用1,2,3…表示。6阶矩阵长方形长度不是2就是3,所以最多也就是到正负2而已。曹操和竖直长方形一样,只能上下移动,用数字8表示。曹操到达龙的嘴巴[0, 2]为胜利条件。另外每关限定步数,用depth表示。于是上面两幅图可以表示为: