矩阵连乘问题的java实现
来源:互联网 发布:淘宝店铺的网址怎么看 编辑:程序博客网 时间:2024/05/27 20:32
代码如下:
public class matrixChain {
static int m[][],s[][];
//p[]记录矩阵A1,A2,A3,....,An;m[][]记录每次计算之后的最少次数及最优值;s[][]记录最佳断点位置。
public static void matrixChain(int p[],int m[][],int s[][]) {
int n = p.length-1;
int i,j;
for ( i = 1; i <=n; i++) //初始化单个矩阵的计算值
m[i][i] = 0;
for (int r = 2; r <= n; r++) { //矩阵链的长度
for ( i = 1; i <=n-r+1; i++) { //矩阵链长度为r的矩阵的起始位置
j = i+r-1; //矩阵链长度为r,起始位置为i的最后一个矩阵的位置
m[i][j] = m[i][i]+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;
}
}
}
}
}
public static void traceBack(int s[][],int i,int j) {
if(i==j)
return;
traceBack(s,i,s[i][j]);
traceBack(s,s[i][j]+1,j);
System.out.println("Multiply A" + i + "," + s[i][j] + "and A"
+ (s[i][j] + 1) + "," + j);
}
public static void main(String[] args) {
int p[] = { 30, 35, 15, 5, 10, 20, 25};
int n=p.length-1;
m=new int[10][10];
s=new int[10][10];
matrixChain(p,m,s);
traceBack(s,1,n);
}
}
效果如下:
- 矩阵连乘问题的java实现
- JAVA实现矩阵连乘问题
- 动态规划求解矩阵连乘问题Java实现
- java实现动态规划求解矩阵连乘问题
- 矩阵连乘问题的一个具体实现
- 矩阵连乘问题的动态规划算法(java)
- 矩阵连乘的JAVA实现(动态规划)
- 矩阵连乘的JAVA实现(动态规划,递归)
- C语言实现矩阵连乘问题
- 矩阵连乘问题 C语言实现
- 动态规划实现矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 【HDU 2135】【水题】 Rolling table
- vs2010 编写windows service 服务程序
- UITextView
- ACM题集以及各种总结大全
- ArcGIS输出面-由TXT文件转换成矢量面
- 矩阵连乘问题的java实现
- Java的NIO
- Linux 文件系统:procfs, sysfs, debugfs 用法简介
- hadoop namenode ha--手动切换
- IIS7 web app error : "Could not load type 'System.Security.Claims.ClaimsIdentity' from assembly
- 交换前后字符串
- 【HDU 1272】【并查集】小希的迷宫
- 小案例——用MVC实现查询学生功能
- Listview 添加OnScrollListener 监听滑动到底部