植物大战僵尸——集齐单色金盏花的策略
以前很用心的玩过一段时间植物大战僵尸,用win7玩的。
点亮了所有植物
无限生存模式也玩到了不错的成绩
智慧树养到了很高的程度,然而她一直不说有意思的话了。。。
种植物基本上都是上下对称的。
我还专门收集过单色的金盏花,但是这很难。
就是拼命买种子,然后如果颜色不对的,就把它卖掉。
首先,这样肯定要亏很多钱的,得有足够的钱,这个我有。
然后,金盏花的颜色有很多种。
在点击打开链接这个链接里面有讨论,都说有11种,我不太记得了,好像差不多应该就是11左右。
如果是11种的话,要碰到需要的颜色可不容易。
最要命的是2个时间问题。
一方面,金盏花的种子不能连续的买。
在商店里面,只有3个种子在独立地卖,对于每个种子,玩家买了之后,必须等一段时间之后才能买。
我不记得是多久了,好像是几个小时,反正时间不短。
另一方面,种子浇水之后需要一定的时间才能发芽,然后才能看到颜色。
而且,金盏花还有2种方向!
然而机智的我还是凑齐了2套:
上面的全部是1种紫色花,下面的是2种白色花,都是face to face的方向。
这主要归功于,我发现植物大战僵尸是不联网的游戏。
不联网的游戏怎么获取时间呢?很明显,只能是获取系统当前时间。
于是我写了2个bat:
第一个,买种子.bat
@date 2015/1/4
@ping 127.0.0.1 -n 3
@date 2015/1/5
@ping 127.0.0.1 -n 3
@date 2015/1/6
@ping 127.0.0.1 -n 3
@date 2015/1/7
@ping 127.0.0.1 -n 3
@date 2015/1/8
@ping 127.0.0.1 -n 3
@date 2015/1/9
@ping 127.0.0.1 -n 3
@date 2015/1/10
@ping 127.0.0.1 -n 3
第二个,修改时间.bat
:n
@date 2015/1/1
@ping 127.0.0.1 -n 2
@date 2015/1/2
@ping 127.0.0.1 -n 2
goto :n
这2个bat的作用是不一样的,一个是买种子,一个是让种子发芽。
总之,有了这2个bat之后,就可以轻松无限买种子了,只要你有钱,简直是外挂。
对于win10,只要右键bat文件,点击“以管理员身份运行”即可,普通的双击运行是没有效果的。
在破除了时间限制的条件下,我们来讨论一下,如何集齐32朵紫色金盏花?
首先是方向问题,到底应该集单向的还是face to face的呢?
这个不应该一开始就决定,应该先不管方向,先收集一些紫色花,然后看看她们的颜色如何。
即使打定了主意要集单向的,也应该这么做,看哪个方向的比较多就继续集哪个方向的。
后来发现,两个方向的数量非常接近。
这样的话,且不说已有的基础,哪怕是从头开始集,集face to face的绝对比集单向的要容易很多。
因为两个方向的概率应该是一样的我感觉,所以集face to face的其实差不多就相当于是不管方向,只要颜色对就行。
这样,最后只需要按照颜色一排就是的了。
当然了,集face to face的肯定是比不管方向的要难一些,不过差别确实不大。
然后再考虑这样一个问题:金盏花有11种颜色,如果不管方向,如何集齐32朵紫色的?
每次买3个种子,不是紫色的就卖掉,然后进入下一轮循环。。。
每一轮都有这些操作:
(1)运行买种子.bat,同时买种子
(2)浇水
(3)运行修改时间.bat,运行结束之后种子就发芽了
(4)如果是不需要的,就直接卖掉
到了集齐31朵的时候,如果每次只买一个种子的话,这样还是比较麻烦,所以,我们需要借助水生植物园。
事实上,当集齐30朵的时候,我们就需要借助水生植物园了。
这样,就可以每一轮都买3个种子了。
最后考虑,大约需要多少轮(每轮购买3个种子)才能集齐32朵紫色的?
这是一个动态规划问题,类似于找bug问题:概率与期望 POJ 2096 Collecting Bugs
这个问题抽象出来就是:
f[0]=0,f[1]=0,f[2]=0
f[n]=(f[n-1]*300+f[n-2]*30+f[n-3]+1331)/331.0
而f[34]就是答案,这样就很简单了。
代码:
-
#include<iostream>
-
using namespace std;
-
-
int main()
-
{
-
double f[35];
-
f[0] = 0, f[1] = 0, f[2] = 0;
-
for (int n = 3; n <= 34; n++)
-
f[n] = (f[n - 1] * 300 + f[n - 2] * 30 + f[n - 3] + 1331) / 331;
-
cout << f[34];
-
return 0;
-
}
答案是117.667,约为118,也就是说大约要118轮才能集齐32朵紫色的。
不要误会,我打断点看了更精确的结果,答案并不是353/3.0
文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nameofcsdn/article/details/52835228
- 点赞
- 收藏
- 关注作者
评论(0)