博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1651 Multiplication Puzzle 区间dp(水
阅读量:5989 次
发布时间:2019-06-20

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

题目链接:

题意:

给定一个数组,每次能够选择内部的一个数 i 消除,获得的价值就是 a[i-1] * a[i] * a[i+1]

问最小价值

思路:

dp[l,r] = min( dp[l, i] + dp[i, r] + a[l] * a[i] * a[r]);

#include 
#include
#include
#include
#include
#include
using namespace std;const int N = 105;const int inf = 100000000;int a[N], dp[N][N], n;int dfs(int l, int r){//返回 把区间l,r合并,最后仅仅剩下a[l]和a[r]能获得的最小价值 if(l > r) return 0; if(dp[l][r] != -1)return dp[l][r];//若区间[l,r]已经计算过则不再计算 if(l == r || l+1 == r) return dp[l][r] = 0;//仅仅有1个或者2个元素则价值是0 int ans = inf; for(int i = l+1; i < r; i++) ans = min(ans, a[i] * a[l] * a[r] + dfs(l, i) + dfs(i, r)); return dp[l][r] = ans;}int main(){ while(cin>>n){ for(int i = 1; i <= n; i++)scanf("%d", &a[i]); memset(dp, -1, sizeof dp); cout<

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

你可能感兴趣的文章
{转载}【真正的Expression Blend实战开发技巧】
查看>>
一致性 hash 算法
查看>>
Tomcat服务器的Web安全的解决方法
查看>>
python的安装使用
查看>>
如何写好研究生开题报告
查看>>
Android FrameWork——Binder机制详解(2)
查看>>
【放松一下】北美小游戏排行榜TOP10——“点击英雄”
查看>>
上传项目到GitHub
查看>>
Atitit.一个cms有多少少扩展点,多少api&#160;wordpress&#160;&#160;cms有多少api。。扩展点...
查看>>
【JAVA笔记——道】Class初始化理解
查看>>
课堂笔记
查看>>
CHIL-ORACLE-函数
查看>>
vagrant 安装
查看>>
74HC165级联
查看>>
如何手工释放linux内存
查看>>
面向对象的Shell脚本
查看>>
css版tooltip
查看>>
Servlet-ServletRequest
查看>>
JavaWeb_JSP语法
查看>>
ceph(5)--Ceph 与 OpenStack 集成的实现
查看>>