博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1651 Multiplication Puzzle(区间DP,直接用矩阵相乘的方式也对)
阅读量:4037 次
发布时间:2019-05-24

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

1、

2、题目大意:

给出n个数,现在要将这些数一个一个的取出来,但是不能取出两个端点的数字,取出第i个数字(c[i])的代价是

c[i-1]*c[i]*c[i+1]

用矩阵相乘的思想dp[i][j]表示i到j区间取出来的代价

dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+c[i]*c[k]*c[j])

3、AC代码:

#include
#include
using namespace std;#define N 105#define INF 0x7ffffffint c[N];int dp[N][N];int main(){ int n,tmp; while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) scanf("%d",&c[i]); for(int i=1;i<=n;i++) dp[i][i]=0; for(int i=2;i<=n;i++) { for(int j=1;j+i<=n;j++) { dp[j][j+i]=INF; for(int k=j;k

 

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

你可能感兴趣的文章
【leetcode】Pascal's Triangle II (python)
查看>>
java swing最简单实例(2) 往JFrame里面放一个容器或组件
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
从头开始学习JSP(3)——一些配置
查看>>
html常用标签快速检索
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
通过/proc/PID/status查看进程内存占用情况
查看>>
/proc文件系统读出来的数据是最新的吗?
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
python单元测试unittest学习
查看>>