uva 348 (矩阵链乘 打印路径)
2015-03-13 22:28
323 查看
题意:
求矩阵链乘最小值,并打印路径。
解析:
状态转移方程:dp[ i ] [ j ] = min(dp[ fr ] [ k ] + dp[ k + 1 ] [ to ] + x[fr] * y[k] * x[to]
代码:
求矩阵链乘最小值,并打印路径。
解析:
状态转移方程:dp[ i ] [ j ] = min(dp[ fr ] [ k ] + dp[ k + 1 ] [ to ] + x[fr] * y[k] * x[to]
代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <cstring> #include <cmath> #include <stack> #include <vector> #include <queue> #include <map> #define LL long long using namespace std; const int maxn = 10 + 10; const int inf = 0x3f3f3f3f; int x[maxn], y[maxn]; int dp[maxn][maxn]; int path[maxn][maxn]; int dfs(int fr, int to) { int& res = dp[fr][to]; if (res != -1) return res; path[fr][to] = fr; if (fr == to) return res = 0; res = inf; for (int k = fr; k < to; k++) { int t = dfs(fr, k) + dfs(k + 1, to) + x[fr] * y[k] * y[to]; if (t < res) { res = t; path[fr][to] = k; } } return res; } void print_path(int fr, int to) { if (to < fr) return; if (fr == to) { printf("A%d", fr + 1); } else { printf("("); print_path(fr, path[fr][to]); printf(" x "); print_path(path[fr][to] + 1, to); printf(")"); } } int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); #endif // LOCAL int n; int ca = 1; while (scanf("%d", &n) && n) { for (int i = 0; i < n; i++) { scanf("%d%d", &x[i], &y[i]); } memset(dp, -1, sizeof(dp)); dfs(0, n - 1); printf("Case %d: ", ca++); print_path(0, n - 1); printf("\n"); } return 0; }
相关文章推荐
- Optimal Array Multiplication Sequence UVA - 348 (最优矩阵链乘+递归输出路径+区间dp)
- UVa 10054 - The Necklace, 欧拉回路+打印路径
- uva 116 Unidirectional TSP【号码塔+打印路径】
- UVA 531 Compromise(LCS算法+打印路径)
- 01背包(打印路径) 之 uva 624
- uva11374迪杰斯特拉最短路径+打印
- UVA 531 - Compromise(dp + LCS打印路径)
- UVA 348 Optimal Array Multiplication Sequence 最优矩阵链乘 dp经典
- UVA 11374 SPFA+路径打印
- 入门经典-习题7-1,109-uva208消防车-DFS,并查集,打印路径,利用set保存边,字典序,STL⭐⭐⭐⭐⭐复杂度:3
- uva 11404 LCS打印字典序最小路径
- uva 624 CD (0-1背包打印路径)
- UVA 624 - CD (01背包打印路径)
- uva10051(最长上升子序列 + 路径打印)
- UVA - 116 - Unidirectional TSP (简单DP + 打印路径)
- POJ 1141 / UVa 1626 Brackets Sequence (区间DP&打印路径)
- UVA 348 Optimal Array Multiplication Sequence 最优矩阵链乘 区间DP
- uva624 CD(dp 0-1 背包 打印路径)
- [UVA 10054]The Necklace[欧拉回路][打印路径]
- UVA 624 CD(01背包+dp打印路径)