POJ-1651 Multiplication Puzzle(区间dp)
来源:互联网 发布:apache与php关系 编辑:程序博客网 时间:2024/05/22 03:24
题意:给出一组数,每删除一个数的代价是其左右两边的数与该数连乘的数值,求除了首尾两个数之外,删除中间所有数的最小代价是多少。
思路:区间dp。与http://blog.csdn.net/yo_bc/article/details/75028461有异曲同工之妙。
Code:
#include <algorithm>#include <string.h>#include <cstdio>using namespace std;const int maxn = 105;int value[maxn];int dp[maxn][maxn];int main(){int t, n;while(scanf("%d", &n) != EOF){for(int i = 1; i <= n; ++i) scanf("%d", &value[i]);memset(dp, 0x3f, sizeof dp);for(int i = 2; i < n; ++i) dp[i][i] = value[i]*value[i-1]*value[i+1];for(int len = 2; len < n-1; ++len)for(int i = 2; i < n-len+1; ++i){int j = i+len-1;for(int k = i; k <= j; ++k){if(k == i) dp[i][j] = min(dp[i][j], dp[k+1][j]+value[k]*value[i-1]*value[j+1]);else if(k == j) dp[i][j] = min(dp[i][j], dp[i][k-1]+value[k]*value[i-1]*value[j+1]);else dp[i][j] = min(dp[i][j], dp[i][k-1]+dp[k+1][j]+value[k]*value[i-1]*value[j+1]);}}printf("%d\n", dp[2][n-1]);}return 0;}
继续加油~
阅读全文
1 0
- 【DP】 POJ 1651 Multiplication Puzzle 区间DP
- poj-1651 Multiplication Puzzle 区间DP
- POJ 1651 Multiplication Puzzle (区间DP)
- POJ 1651 Multiplication Puzzle (区间dp)
- POJ 1651 Multiplication Puzzle 区间dp(水
- POJ 1651 Multiplication Puzzle(区间dp)
- poj 1651 Multiplication Puzzle (区间DP)
- POJ 1651 Multiplication Puzzle(区间dp)
- poj 1651 Multiplication Puzzle (区间dp)
- poj 1651 Multiplication Puzzle(区间dp)
- POJ 1651 Multiplication Puzzle(区间DP)
- POJ 1651 Multiplication Puzzle(区间dp)
- POJ 1651 - Multiplication Puzzle(区间DP)
- POJ 1651 Multiplication Puzzle(区间DP)
- POJ 1651 Multiplication Puzzle(区间DP 水题)
- poj 1651 Multiplication Puzzle【区间DP】
- POJ 1651 Multiplication Puzzle (区间DP)
- poj 1651 Multiplication Puzzle(区间DP)
- visual studio 12/13基础c++工程建立使用
- jdk8 list排序
- JPA @MappedSuperclass注解的使用说明
- mysql数据库操作(一)
- 数据结构之BFS(邻接表版)
- POJ-1651 Multiplication Puzzle(区间dp)
- [C++]回调函数
- windows下使用虚拟机搭建linux环境
- 设计模式-简单工厂模式
- vi/vim工作模式及常用命令
- 创建maven项目
- ZigBee中常用的结构体
- iOS HTTP, http协议, tcp, ip
- java Properties 键的顺序按照文件里的顺序排列