推箱子游戏的算法或者说建模问题
考虑到国庆人多,所以没有出去,一直猫在家中。
这几天闲来无事,在玩手机上自带的小游戏--推箱子。
玩来玩去,总是有那么几关过不去,因此想是否能写个程序,自动计算出答案。
但考虑了很长时间,发觉问题不是那么简单。到现在为止,连如何建模都没有搞定。
其实,只要建模完成,剩下的事无非是递归、回溯就能解决了。
相信大多数同志都玩过这个游戏,其规则我就不写了。
游戏中涉及墙壁、推箱子的小人、个数不等的箱子、与箱子个数相等的球。
箱子移动过程中,要考虑人的位置。若人位于箱子的一边,被挡住了过不去的话,哪怕箱子那边是空档,你也无法向那个方向推动箱子。个人觉得这是与迷宫之类游戏的最大不同。
因此,建模过程中需要同时考虑人、箱子及其之间的相互关系。当然,墙壁和球也要考虑,但因为它们是固定不动了,相对简单。
但象这种多变量建模,还真没弄过。
另一方面,箱子和球都是没有编号的,任何箱子都能与任何球匹配。也就是说,箱子之间没有权重和优先级的区别,这一点有别于书上的八皇后问题和中国象棋,倒有点和围棋相似。
本人能力有限,敢问网上高手,有无解决方案?