矩阵连乘C++完整代码
时间: 2024-04-30 07:15:09 浏览: 118
当然,下面是一个用C++实现的矩阵连乘的完整代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 计算矩阵连乘的最小代价
int matrixChainOrder(vector<int>& dimensions) {
int n = dimensions.size() - 1;
vector<vector<int>> dp(n, vector<int>(n, 0));
for (int len = 2; len <= n; ++len) {
for (int i = 0; i < n - len + 1; ++i) {
int j = i + len - 1;
dp[i][j] = INT_MAX;
for (int k = i; k < j; ++k) {
int cost = dp[i][k] + dp[k + 1][j] + dimensions[i] * dimensions[k + 1] * dimensions[j + 1];
if (cost < dp[i][j]) {
dp[i][j] = cost;
}
}
}
}
return dp[n - 1];
}
int main() {
vector<int> dimensions = {10, 30, 5, 60};
int minCost = matrixChainOrder(dimensions);
cout << "矩阵连乘的最小代价为:" << minCost << endl;
return 0;
}
```
这段代码使用动态规划的思想,通过填充一个二维数组`dp`来计算矩阵连乘的最小代价。其中,`dimensions`是一个存储矩阵维度的向量,例如`{10, 30, 5, 60}`表示有三个矩阵,维度分别为10x30、30x5和5x60。最后输出的`minCost`即为矩阵连乘的最小代价。
阅读全文