魔法动物园代码挑战Java杂志#6-2014
由于我们有一个递归定义,其中使用了逐渐减小的参数总和(在每一步减少1),动态规划在这里显得非常适用。State
类仅用于存储动物数量的三倍。在填充新地图(分数)时,我在scorePrevious
中使用了上一轮的值(参数和 x+y+z
减少1)。
可能的步骤是对称的,因此我们将动物的数量按降序排列(S(x, y, z) = S(z, x, y)
,参数顺序无关紧要)。程序运行约2.5小时后,得到了一个解决方案,参见以下输出。后来我使用Lambda表达式实现了并行化处理。并行版本显著提升了性能,计算时间减少到49分钟。
请求的解决方案是4023,公式如下:
S(x, y, z) = max { S(x+1, y-1, z-1), S(x-1, y...
暂无评论