《算法设计与分析》第十二周作业
标签(空格分隔): 课堂作业
姓名:李**
学号:16340114
题目:Burst Balloons(https://leetcode.com/problems/burst-balloons/)
题目概要
给定一串数字,每个数字代表一个气球,每个气球都有一个数值。每次扎破一个气球,可以得到该气球左边和右边以及自身数字之积的硬币,若果左/右没有气球,其数值为1。求能拿到的最大硬币数
思路
这个题目可以先从最简单的情况出发,只有一个气球的时候,只能得到该气球数值的硬币数。对于一般情况,即气球不止一个时(下标从i到j)考虑最后一个需要扎破的气球。当这个气球最后被扎破时,其余被扎破的气球都能获得最大的硬币,而扎破最后选定的气球k的收益为 n u m s [ i − 1 ] ∗ n u m s [ k ] ∗ n u m s [ j + 1 ] nums[i-1]*nums[k]*nums[j+1] nums[i−1]∗nums[k]∗nums[j+1],整段气球的收益为: n u m s [ i − 1 ] ∗ n u m s [ k ] ∗ n u m s [ j + 1 ] + c o i n s [ i t o k − 1 ] + c o i n s [ k + 1 t o j ] nums[i-1]*nums[k]*nums[j+1]\ +\ coins[i\ to\ k-1] + coins[k+1\ to\ j] nums[i−1]∗nums[k]∗nums[j+1

本文详细介绍了《算法设计与分析》课程第十二周的作业——Burst Balloons问题。通过分析题目,提出动态规划的解题思路,并给出具体的实现代码,讨论了动态规划状态转移方程和边界条件的处理,帮助理解如何求解最大硬币数。
最低0.47元/天 解锁文章
1916

被折叠的 条评论
为什么被折叠?



