LINTCODE——吹气球
LINTCODE——吹气球
思路:dp[start][end] 表示从start到end的最大分数。当mid气球吹爆的时候,left和right变成相邻的气球,此时如果将mid吹爆再切割,则不方便转移,那么就以mid为分割点,先吹爆两侧的气球。mid最后吹爆:mid = nums[start-1]*nums[i]*nums[end+1];
参考
class Solution {
public:/** @param nums: A list of integer* @return: An integer, maximum coins*/int maxCoins(vector<int> &nums) {// write your code hereint n = nums.size();vector<vector<int> > dp(n+2,vector<int>(n+2 ,0));vector<vector<bool> > isVisited(n+2,vector<bool>(n+2 ,false));nums.insert(nums.begin(),1);nums.insert(nums.end(),1);int res = search(dp,isVisited,nums ,1,n);return res;}int search(vector<vector<int> > &dp,vector<vector<bool> > &isVisited , vector<int> &nums , int start , int end){if(isVisited[start][end])return dp[start][end];int res = 0;for(int i = start ; i <= end ;i++){int mid = nums[start-1]*nums[i]*nums[end+1];int left = search(dp,isVisited,nums,start,i-1);int right = search(dp,isVisited,nums,i+1,end);res = max(res,left + mid + right);}isVisited[start][end] = true;dp[start][end] = res;return res;}
};
LINTCODE——吹气球相关推荐
- LintCode 249. 统计前面比自己小的数的个数
给定一个整数数组(下标由 0 到 n-1, n 表示数组的规模,取值范围由 0 到10000).对于数组中的每个 ai 元素,请计算 ai 前的数中比它小的元素的数量. 注意事项 We suggest ...
- LintCode: Max Tree
题目 Given an integer array with no duplicates. A max tree building on this array is defined as follow ...
- 【LintCode: 3. 统计数字】算法题解析
这是一道来自LintCode的算法题目,本文用C++来解答这道题,链接为: https://www.lintcode.com/problem/digit-counts/description 题目描述 ...
- LintCode 1.A+B的问题
LintCode 1.A+B的问题 描述 给出两个整数 a 和 b , 求他们的和. 答案 public class Solution {/*** @param a: An integer* @par ...
- 关于爬楼梯的lintcode代码
讲真的,这个我只会用递归去做,但是lintcode上面超时,所以只有在网上找了个动态规划的,虽然这个程序懂了,但是我觉得还是挺不容易的真正弄懂的话-- class Solution { public: ...
- lintcode: k Sum 解题报告
K SUM My Submissions http://www.lintcode.com/en/problem/k-sum/ 题目来自九章算法 13% Accepted Given n distinc ...
- LintCode Longest Increasing Continuous Subsequence
原题链接在这里:http://www.lintcode.com/en/problem/longest-increasing-continuous-subsequence/ 题目: Give an in ...
- lintcode 滑动窗口的最大值(双端队列)
题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为 ...
- leetcode 293.Flip Game(lintcode 914) 、294.Flip Game II(lintcode 913)
914. Flip Game https://www.cnblogs.com/grandyang/p/5224896.html 从前到后遍历,遇到连续两个'+',就将两个加号变成'-'组成新的字符串加 ...
- LintCode 402: Continuous Subarray Sum
LintCode 402: Continuous Subarray Sum 题目描述 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的下标 ...
最新文章
- 计算机科学基础知识(六)理解栈帧
- 初学Java Web(8)——过滤器和监听器
- Java第三章 类和对象3.1+3.2
- 修改oracle用户资源限制,RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数...
- 64位ie加载java失败_java-无法在AMD 64位平台上加载IA 32位.dll
- STM32F407+CubeMX-使用TIM产生PWM信号
- 2022年学C++好比49年入国军?
- springcloud 入门 4 (rebbon源码解读)
- 基础教程之Running Man奔跑
- 服务器里网页不显示图片,网页上看不到图片的解决方法步骤
- 那智机器人程序备份复原方法
- 主机当前没有管理网络冗余
- 出现了一些错误,请尝试重启Geforce Experience
- Log4j2漏洞发展历程及解决方案
- Centos Linux 和 CentOS Stream比较
- 女孩学医好还是学计算机好,女生选择学医好吗 学医有多累
- 最新30个漂亮的个人作品集网页设计案例
- 联想微型计算机设置从u盘启动,联想bios设置u盘启动教程
- 软考之下午题做题技巧
- 手机QQ2008下载地址