博客
关于我
LintCode168.吹气球
阅读量:209 次
发布时间:2019-03-01

本文共 1381 字,大约阅读时间需要 4 分钟。

有n个气球,编号为0到n-1,每个气球都有一个分数,存在nums数组中。每次吹气球i可以得到的分数为 nums[left] * nums[i] * nums[right],left和right分别表示i气球相邻的两个气球。当i气球被吹爆后,其左右两气球即为相邻。要求吹爆所有气球,得到最多的分数。

**区间型动态规划问题+记忆化搜索

从大到小 类似分治的思想
dp数组代表吹爆序号i到j的气球得到的最多分数
为了方便边界两个气球的运算 在左右边界添加一个元素1
用一个二维数组记录已经搜索过的区间情况
对数组每个元素作为最后吹爆的气球进行遍历
搜索每个元素左右两边区间 dfs
**

public class Solution {       /**     * @param nums: A list of integer     * @return: An integer, maximum coins     */    public int maxCoins(int[] nums) {           int n = nums.length;        if(nums == null || n == 0)            return 0;        int[] arr = new int[n+2];        int[][] dp = new int[n+2][n+2];        boolean[][] flag = new boolean[n+2][n+2];        for(int i = 1; i < n + 1; i++){               arr[i] = nums[i-1];        }        arr[0] = 1;        arr[n + 1] = 1;        return search(1, n, arr, dp, flag);    }    private int search(int left, int right, int[] arr, int[][] dp, boolean[][] flag){           if(flag[left][right])            return dp[left][right];        for(int k = left; k <= right; k++){               int midValue = arr[left-1] * arr[k] * arr[right+1];            int leftValue = search(left, k-1, arr, dp, flag);            int rightValue = search(k+1, right, arr, dp, flag);            dp[left][right] = Math.max(dp[left][right], midValue + leftValue + rightValue);        }        flag[left][right] = true;        return dp[left][right];    }}

转载地址:http://exvv.baihongyu.com/

你可能感兴趣的文章
计算机组成原理第七天知识点
查看>>
RTSP/RTP协议直播推送库EasyPusher推RTSP流至EasyDarwin开源平台实现自定义Stream
查看>>
ESP32 基础篇:ESP-IDF 编程指南
查看>>
andriod错误收集及解决不断更新
查看>>
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
查看>>
React-navigation物理返回键提示效果BackHandler
查看>>
intellij 提示 java-numbers.iml does not exist 不存在
查看>>
Confluence 6 让 Jira 应用停止发送通知到 Confluence
查看>>
【OpenCV】 2.4.13-编程过程遇到问题记录
查看>>
Wireshark抓包实验
查看>>
maven仓库设置,windows和mac
查看>>
Android错误收集
查看>>
浙大机器学习课程-8-支持向量机(原问题转化为对偶问题)
查看>>
css3之路- 结构性伪类
查看>>
23_System_arraycopy的使用
查看>>
239_自定义View画圆环环形
查看>>
四、让字符串成为回文串的最少插入次数(Weekly Contest 170)
查看>>
流媒体音视频服务云管理平台EasyNVS平台中视频播放页面出现错误码的问题解决
查看>>
AI视频结构化智能安防平台EasyCVR自定义场景下的网页标题优化
查看>>
渗透测试工具实战技巧合集
查看>>