首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的记忆矩阵链乘法

Java中的记忆矩阵链乘法
EN

Stack Overflow用户
提问于 2017-02-05 11:57:17
回答 1查看 566关注 0票数 0

我觉得我真的很接近在Java中实现记忆矩阵链算法,但是我在第45行和第53行得到了一个数组越界错误。出于某种原因,这些似乎真的把我搞糊涂了。也许有什么东西我一直在搞砸,但我不知道,很明显。有人能帮我吗?

代码语言:javascript
复制
public class Lab2 {
//fields
static int p[];
static int m[][];
final static int INFINITY = 999999999;

public Lab2() {
    // 
}
public static void main(String[] args) {
Lab2 lab2 = new Lab2();

Lab2.m = new int[7][7];

Lab2.p = new int[7];
Lab2.p[0] = 20;
Lab2.p[1] = 8;
Lab2.p[2] = 4;
Lab2.p[3] = 25;
Lab2.p[4] = 30;
Lab2.p[5] = 5;
Lab2.p[6] = 10;


int n = Lab2.p.length-1;

//initialize m array to infinity
for (int i = 1; i <= n; i++){
    for (int j = i; j <= n; j++){
        Lab2.m[i][j]= INFINITY;
    }
}
lab2.lookUpChain(m, p, 1, n);

for (int i = 0; i < 8; i++){
    for (int j = 0; j < 8; j++){
        System.out.println(m[i][j]);
    }
}

}
//
public int lookUpChain(int m[][], int p[], int i, int j ){
if (m[i][j]<INFINITY){
    return m[i][j];
}
if (i == j){
    m[i][j] = 0;
}
else{
    for (int k = i; k <= j; i++){
        int q = (lookUpChain(m,p,i,k)) + (lookUpChain(m,p,k+1,j)) +     (p[i]*p[k]*p[j]);
        if (q < m[i][j]){
            m[i][j] = q;
        }
    }
}
return m[i][j];

}
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-12 04:44:03

否则{

(int k= i;k <= j;i++)

更改为:

代码语言:javascript
复制
else{
for (int k = i; k <= j; k++) // change i to k
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42048382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档