矩阵连乘
来源:互联网 发布:12345泗洪网络问政 编辑:程序博客网 时间:2024/04/28 09:14
#include <iostream>
#include <cstring>
#include <cstdio>
#define MAX 1000
using namespace std;
int m[MAX][MAX];
int s[MAX][MAX];//fenge qingkuang
int count = 0;
void MatrixChain(int p[],int n,int m[][MAX],int s[][MAX])
{
for(int i = 1;i <= n;i++) m[i][i] = 0;
for(int r = 2;r <= n;r++)
for(int i = 1;i <= n - r + 1;i++){
int j = i + r - 1;
m[i][j] = m[i+1][j] + p[i-1]*p[i]*p[j];
s[i][j] = i;
for(int k = i+1;k < j;k++){
int t = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
if(t < m[i][j]){
m[i][j] = t;
s[i][j] = k;
}
}
}
}
void Traceback(int i,int j,int s[][MAX])//输出
{
if(i == j ) cout<<"A"<<i;
else{
cout<<"(";
Traceback(i,s[i][j],s);
cout<<" x ";
Traceback(s[i][j]+1,j,s);
cout<<")";
}
}
int main()
{
// freopen("in.in","r",stdin);
int n;
int p[MAX];//维数
int count = 0;
while(cin>>n && n){
count++;
cout<<"Case "<<count<<": ";
int temp,i;
//输入维数
for( i = 0;i < n-1;i++)
cin>>p[i]>>temp;
cin>>p[i];i++;
cin>>p[i];
MatrixChain(p,n,m,s);//DP求解
Traceback(1,n,s);
cout<<endl;
}
return 0;
}
- 矩阵连乘
- Strassen矩阵连乘
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘
- 矩阵连乘
- 矩阵连乘
- 矩阵连乘
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- DP---矩阵连乘
- 矩阵连乘 模版
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘详解
- 替换应用程序exe图标
- assert断言函数的使用
- Windows和Linux下文件格式的问题
- 企业网站开发学习笔记(1)
- java抽象类
- 矩阵连乘
- struts2入门知识总结1
- UESTC1490 Eight Puzzle 双向BFS
- Linux 开机启动流程
- C++模板笔记
- JAVA中封装JSONUtils工具类及使用
- Android设置EditText只接受数字输入
- 树形表设计
- 非常有用的免费UI设计工具和资源