定义超级和函数F如下:
这题有一點动态规划的意思但是已经把递归公式给出来了,所以要做的就是把递归的算法再进行修改减少重复计算的次数。因此可以用一个二維数组来记录已经计算过的值如果已经计算过就直接使用不再重复计算。代码如下:
但是这样的算法其实还是十分低效的仍然有许多偅复计算。在把递归树画出来之后我发现树的每一层的k值是逐层递减的,每个节点的子节点数也和n值一样因此可以使用一个三层的循環,一层一层计算出f[n][k]的值代码如下:
大侠的三种方法非常好这里介紹一种“有趣的方法”(本人认为):
真苗大侠的第三种解法有小错.公式是否有误?
给你三种方法见附件。全部
定义超级和函数F如下:
这题有一點动态规划的意思但是已经把递归公式给出来了,所以要做的就是把递归的算法再进行修改减少重复计算的次数。因此可以用一个二維数组来记录已经计算过的值如果已经计算过就直接使用不再重复计算。代码如下:
但是这样的算法其实还是十分低效的仍然有许多偅复计算。在把递归树画出来之后我发现树的每一层的k值是逐层递减的,每个节点的子节点数也和n值一样因此可以使用一个三层的循環,一层一层计算出f[n][k]的值代码如下:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。