动态规划1
来源:互联网 发布:腾讯社招java面试题 编辑:程序博客网 时间:2024/06/05 12:50
矩阵乘法:设A1,A2.....An为矩阵序列,Ai为Pi-1*Pi阶矩阵,确定乘法顺序使得元素相乘的总次数最少。
#include <iostream>
using namespace std;
void MatrixChain(int P[],int size, int m[][7],int s[][7]);
void CheckTable(int s[][7],int i,int j);
int main()
{
int P[7] = {30,35,15,5,10,20,25};
int m[7][7];
int s[7][7];
for ( int i = 0;i < 7;i++)
{
for( int j = 0;j < 7;j++ )
{
m[i][j] = 0;
s[i][j] = 0;
}
}
MatrixChain(P,7,m,s);
CheckTable(s,1,6);
}
void MatrixChain(int P[],int size,int m[][7],int s[][7])
{
int i = 0;
int j = 0;
//////////////清零//////////
for ( i = 0;i < size;i++)
{
for( j = 0;j < size;j++ )
{
m[i][j] = 0;
s[i][j] = 0;
}
}
////////////////////////////////
for (int r = 2;r <= size;r++)
{
for (i = 1;i < size-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-1; 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;
cout <<r<<" "<<t<<" "<<k<<endl;
}
}
}
}
}
void CheckTable(int s[][7],int i,int j)
{
if((j-i) <= 1 )
return;
int k = s[i][j];
cout<<k<<endl;
CheckTable(s,i,k);
CheckTable(s,k+1,j);
}
- 动态规划详解1
- 动态规划1
- 动态规划随记1
- 动态规划-(1)
- 【动态规划】Formula 1
- 动态规划(1)
- 动态规划算法1
- 动态规划1
- 动态规划1
- 动态规划1
- 简谈--动态规划1
- 动态规划入门1
- 动态规划1
- 动态规划1
- 动态规划1
- 动态规划(1)
- 动态规划 DP 1
- 动态规划思考1
- 几种多线程3D引擎架构的比较
- vc c mysql
- 江南春 杜牧
- oracle
- OGRE 构建CEGUI
- 动态规划1
- Java反射学习
- Grub2启动项的修改和相关操作命令
- mysql重新安装后出错的解决方法
- 技术管理中常见的几个问题
- location.href的用法
- MATLAB 冒号用法大全
- excel函数
- ASP.NET MVC资源汇总(本文不断更新)