UVa 348: Optimal Array Multiplication Sequence
来源:互联网 发布:詹姆斯07年总决赛数据 编辑:程序博客网 时间:2024/05/01 13:15
最优矩阵链乘问题。经典dp问题。
我的解题代码如下,其中dp[i][j]表示计算从第i个矩阵到第j个矩阵的矩阵链的乘积所需的最少乘法次数,dpi[i][j]表示计算从第i到第j个矩阵乘积所做的最后一次乘法在第dpi[i][j]个矩阵之后的位置。
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;#define maxn 10const int INF = 0x7fffffff;int Row[maxn], Col[maxn];int dp[maxn][maxn];int dpi[maxn][maxn];int f(int s, int t){if(dp[s][t]!=-1) return dp[s][t];dpi[s][t] = s;if(s==t) return dp[s][t] = 0;int min = INF, tmp;for(int i=s; i<t; i++){tmp = f(s,i)+f(i+1,t)+Row[s]*Col[i]*Col[t];if(min>tmp) { min = tmp; dpi[s][t] = i; }}return dp[s][t] = min;}void print(int s, int t){if(s>t) return;if(s==t) { printf("A%d",s+1); return ;}printf("(");print(s,dpi[s][t]);printf(" x ");print(dpi[s][t]+1,t);printf(")");return;}int main(){int N, Case = 0;while(scanf("%d",&N) && N){for(int i=0; i<N; i++) scanf("%d %d",&Row[i],&Col[i]);memset(dp,-1,sizeof(dp));printf("Case %d: ",++Case);f(0,N-1);print(0,N-1);printf("\n");}return 0;}
- uva 348 Optimal Array Multiplication Sequence
- uva:348 - Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence
- UVA 348 Optimal Array Multiplication Sequence
- UVa 348 - Optimal Array Multiplication Sequence
- uva 348 - Optimal Array Multiplication Sequence
- UVa 348 - Optimal Array Multiplication Sequence
- UVa 348 - Optimal Array Multiplication Sequence
- Uva-348-Optimal Array Multiplication Sequence
- UVa 348: Optimal Array Multiplication Sequence
- UVa:348 Optimal Array Multiplication Sequence
- UVA - 348 Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence (DP)
- uva 348 - Optimal Array Multiplication Sequence
- UVa 348 Optimal Array Multiplication Sequence(dp)
- UVa 348 - Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence
- hadoop学习过程-2013.08.22.2--hadoop1.2.1修改WordCount并编译
- 简单JAVA观察者模式监测文件是否改动
- cocos2d-x android 调试
- jsf里写自定义的标签
- 设置eclipse启动时手动选择工作空间
- UVa 348: Optimal Array Multiplication Sequence
- 数据库范式(normalization)
- Java算法:二分法算法实现
- 独数的算法
- SpringMVC入门实例及详解
- TADM_3-15
- Lumia 920 恢复工厂设置变"砖"解决办法
- 把项目做成jar包
- 两个整数集合A和B,求其交集