好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 ximo 于 2014-10-31 12:59 编辑
时隔几千年,我们那苦逼的曹操又再次在华容道上面被关羽追杀。那么,到底最终结果是如何呢,且让我们来帮曹操一把吧。
首先,看一下阵法配置
兵 曹操 兵
兵 兵
张 关羽 马
飞 黄赵 超
忠云
转换一下,在程序中的表示就是
0 9 9 1
2 9 9 3
4 8 8 5
4 6 7 5
A 6 7 A
A表示为空
输入方法如下,[编号,方向]
方向:0,向上,1向右,2向下,3向左,比如输入42,就是4(张飞)往下移动一格。输入40就是4(张飞)往上移动一格。
只要最终让我们亲爱的曹操往下移动到现在6,7(黄忠,赵云)的位置就成功逃脱了。
这个华容道游戏虽然看起来简单,但是实际上要用程序去实现是有难度的。我用了别人写好的遍历方法,然后修改了一下,使得它能够输出符号cm输入的答案,看一下跑出来的结果吧
key1:42220252812102931330802101210192131333338000235050712202220291404063030292321140311283506070032192
然后我又手动构造了一个key
key2:425283323312129121208033331313922121010180301032314040633232121293505071111292020323228150704060331192
手动构造的key比程序跑出来的最优解多了2步,应该是正常的,毕竟在我构造key的过程中走错了一步,导致浪费了一些。
PS:用户名与注册无关
keygen中使用了遍历算法,是用来计算最优解的,所以最终只key出来了一个key,毕竟源程序中的初始化的华容道排列是不会变的。如果各个兵将的顺序能够根据用户名来改变的话,那么keygen的效果就会看出来了。
而且这种固定开局的状况导致的结果就是局势只会在程序初始化的时候被初始化。所以每当输入一个正确的key后,必须要重载程序才能用下一个key的。而一旦中途某一步走错了,那么就无论如何都不会出现提示信息。毕竟后面用了 9/ErrorCount 的结构来调用异常显示注册正确。这里ErrorCount必须为0才行的。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|