POJ
来源:互联网 发布:linux运维笔记 编辑:程序博客网 时间:2024/05/21 11:21
题目链接:Multiplication Puzzle
定义状态dp[i][j]表示将区间[i, j]全部取完所需要的最小代价,答案就是dp[1][n - 2]。
状态转移方程为:dp[i][j] = min(dp[i][k - 1] + dp[k + 1][j] + a[i - 1] * a[k] * a[j + 1]) (i <= k <= j)
代码如下:
#include <algorithm>#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <map>using namespace std;const int INF = 0x3f3f3f3f;int main(){ int dp[105][105], a[105], n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); memset(dp, 0, sizeof(dp)); for (int len = 0; len <= n - 3; len++) for (int i = 1; i <= n - 2; i++) { int j = i + len; if (j >= n - 1) break; if (!len) dp[i][j] = a[i - 1] * a[i] * a[i + 1]; else { dp[i][j] = INF; for (int k = i; k <= j; k++) dp[i][j] = min(dp[i][j], dp[i][k - 1] + dp[k + 1][j] + a[i - 1] * a[k] * a[j + 1]); } } printf("%d\n", dp[1][n - 2]); return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- Git与Github
- linux 内核3.14.5 编译成deb
- 系统分布式情况下最终一致性方案梳理
- Android文件各种存储路径的比较
- Java类实例化时的执行顺序
- POJ
- React Native 开发中遇到的问题
- Spring MVC @Autowired、@Controller、@Service 的实现
- MediaServerStudioEssentials2017R2版本安装
- NKOJ-4190 鞋店 <2017信息学夏令营第1场 B题>
- 2017/7/7
- C#连接MYSQL数据库并进行查询
- 中间件zk,kafka,ngnix搭建
- Java中OutOfMemoryError(内存溢出)的三种情况及解决办法