当前位置:手机游戏 > 手游资讯 > 新手问答 

[推箱子11关怎么过]推箱子11关怎么过_迷失蔚蓝 推箱子第7关怎么推_耳机 过推

作者:佚名

[推箱子11关怎么过]推箱子11关怎么过_迷失蔚蓝 推箱子第7关怎么推_耳机 过推,哪吒游戏网给大家带来详细的[推箱子11关怎么过]推箱子11关怎么过_迷失蔚蓝 推箱子第7关怎么推_耳机 过推介绍,大家可以阅读一下,希望这篇[推箱子11关怎么过]推箱子11关怎么过_迷失蔚蓝 推箱子第7关怎么推_耳机 过推可以给你带来参考价值。

第二部分

演算优化相当重要,通过第一部分我们已胜利完成推箱子演算的基本设计,获得不错的结果。从实际的演算情况来看,5个箱子及以下都能迅速获得结果,多的也就几分钟而已,不过6个箱子时情况发生了很大的变化,虽然相当部分还是能在数分钟戓数十分钟内求得结果,但个别情况耗时非常严重,如下图:

01111111110

11001001111

11421006001

10003060601

10001006001

11111160111

00001100011

00001100011

00000111110

求得结果耗时近23小时,而且还是在以下介绍的第1优化情况下获得的。相信不优化的话应该在60-70小时以上甚至更多。

1、优化一:添加死格

这个优化相当简单,不过效果非常明显,虽然并不是对所有地图有效。有的地图效果不明显,有的达2-3倍之多。

何谓死格?就是一些空的格子,人可以走进去推箱子11关怎么过,但箱子不能推进去,因为一旦推进去就无法再推出来,而这个格子又不是目标格,这样的话,推箱子无法再进行了,目标永远无法达成。死格设置值为5,用Space_Dead表示。下面这个方法就实现死格的自动设置:

privatevoid BuildDead(Map design)

{

char[]charSet;

intc;

for(inty = 1; y < Photo.Count - 1; y++)

{

charSet= Photo[y];

for(intx = 1; x < charSet.Length - 1; x++)

{

c= charSet[x];

if(c == SPACE)//是Space 时

{

if(design[x, y] < DESTI) //非目标格才可能是死格

{

if(charSet[x - 1] == WALL || charSet[x + 1] == WALL)//水平方向有Wall

{

if(this[x,y - 1] == WALL || this[x,y + 1] == WALL) //垂直方向有Wall

charSet[x]= (char)SPACE_DEAD;

}

}

}

}

}

}

2、优化二:快照分组

快照数量达数十万时速度迅速减慢,所以适当进行分组是加快求解的好方法。现成的方法是按人站立位置分组,对于10*10的地图,可分成100个组,当然不少位置人是到不了的,实际就是空组,这不影响分组只是浪费少量空间而已。同样的是上面的例子,分组后演算速度迅速提升推箱子11关怎么过,由原来的近23小时变成了76分钟,效果相当不错。

3、优化三:地图分组

地图分组得动动脑筋,因为没有现成的可用的指标。我们引入HashCode来实现。当然并不是用HashCode来标识唯一的地图,而是将不同的地图均匀的分配到不同的组中。考虑对每一格子分配一个值,非箱子所在位置可以忽视,约定箱子权重为1,非箱子权重为0。

HashCode=∑格子值*权重

因此地图HashCode,实际就等于箱子所在格子值之和。

格子值可以考虑依次赋予1、2、3、4、……,对于10*10地图而言,5个箱子时最大HashCode=100+99+98+97+96=490。因为值并不大,可以考虑采用一一对应关系来实现。最大HashCode:

public int MaxHashCode

{

get

{

int code =0;

for (int i = 0; i<BoxCount; i++)

code += (RowNum - 1) * ColNum + ColNum - i - 1;

return code;

}

}

从运行结果来看,这个优化效果不明显,从76分钟变成70分钟,仅提升8.9%。

4、优化四:加大快照分组进一步提升演算速度

优化三地图加入HashCode对提升演算速度效果不明显,不过地图加入HashCode后,快照分组可以考虑将地图也纳入进去。我们对地图分成2组、3组、4组等等分别演算,演算效果不断提升,最终确定分成组数:

组数=行数*列数*最大HashCode

以上例子演算耗时55250毫秒。

哇,地图从开始的23小时变成了不到1分钟完成。

总结:以上内容就是针对[推箱子11关怎么过]推箱子11关怎么过_迷失蔚蓝 推箱子第7关怎么推_耳机 过推详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,[推箱子11关怎么过]推箱子11关怎么过_迷失蔚蓝 推箱子第7关怎么推_耳机 过推部分内容转载自互联网,有帮助可以收藏一下。