此题原来是一个flash益智游戏,公司里当时很多同事在玩,兴趣之余我用vba写了它的代码贴到程序版,后来由taller版主建议才修改成VBA测试题放到了竞赛区。编写这道题代码的时候注意以下几点可以帮助理解思路。
1,因为经过路径为14个不同的点,所以只要找到1组解救相当于找到了28组相似的解(14个不同的起始点+移动方向颠倒)。实际结果为共有4个不同的回路。当然想利用这一点来简化代码看似并不容易。
2,如果是编写常规思路的代码,难点在于处理好回退的过程,需要保证位置回退后不再重复走错误的路线。
3,本题计算量并不是很大,因此代码的速度并不是关键。在编程前经过仔细分析,找出题目中的一些tricks,对简化代码会很有帮助。
截至目前为止,给出本题答案的朋友一共有3位,boszzy:虽然是常规思路,但速度不错,注释详细,代码可读性强。
山菊花:代码最简单,循环镶套很漂亮。asdf1001:代码思路新颖,运行速度很快。
至于本人的代码,采用了最常规的编程思路,论简洁论速度都不及以上各位,但是作为始作俑者,也只能献丑了。
urQC3qm5.rar
(10.86 KB, 下载次数: 144)
本想仔细研读几位的代码以后在作详细的总结,只可惜本人水平实在有限,加上恰逢年总结算,公司事情太多,只能总结到此地步了,如有不周,向大家致歉了。
|