算法课-动态规划

问题

给出个投资项目,每个项目有种投资方式
个项目第种投资方式需要花的钱,最后会得到的钱
现在你有共有总量为的钱,合理分配,最终最多能赚多少钱

解析

表示前个项目共花费元能够得到的最大价值
则选择第个第种投资方式能得到的最大价值应该是
证明:的任意一个确定状态的子决策都是此状态下的最优决策

  • 已知是前个项目共花费元能够得到的最大价值
  • 假设子决策不是这种状态下能得到的最大价值
  • 那么一定存在另一个子决策
  • 用这个子决策替换原来的子决策,必然可以得到一个更大的,这与之前的假设想冲突,因此不存在这个一个
  • 得证

设计

for (int i = 1; i <= n; ++i)
    {
        for (int j = m; j >= 0; --j)
        {
            for (int k = 0; j - k >= 0 && k <= o; ++k)
            {
                dp[i][j] = max(dp[i][j], dp[i - 1][j - k] + f[i][k]);
            }
        }
    }

分析

一共三层循环,第一层n次,第二层m次,第三层o次
总复杂度

源码

传送门

全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务