gpt4 book ai didi

java - 二项式高效动态规划中的 ArrayIndexOutOfBounds

转载 作者:行者123 更新时间:2023-12-01 11:08:28 27 4
gpt4 key购买 nike

我正在尝试创建一种使用动态编程计算(N 选择 R)的方法,但出现数组越界异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at BinomialCoefficients.method5(BinomialCoefficients.java:127)
at BinomialCoefficients.main(BinomialCoefficients.java:50)

我使用的是二维数组。这是我的代码,

protected static long method5(long lN, long lR)
{
long lArray[][] = new long[(int) (lN+1)][(int) (lR+1)];

for(int i = 0; i <= lN; i++)
{
lArray[i][0] = 1;
}
for(int i = 0; i <= lN; i++)
{
lArray[i][i] = 1;
}
for(int i = 0; i <= lN; i++)
{
for(int j = i; j <= i; j++)
{
lArray[i][j] = lArray[i-1][j-1] + lArray[i-1][j];
}
}
/*for(int i = 0; i <= lN; i++)
{
for(int j = 0; j <= i; j++)
{
System.out.print(String.format("%5d", lArray[i][j]));
}
System.out.println();
}*/
return lArray[(int) lN][(int) lR];
}

谁能告诉我这是怎么回事吗?

最佳答案

这段代码看起来很可疑

for(int i = 0; i <= lN; i++)
{
lArray[i][i] = 1;
}

考虑到 lArray 是使用两个可能不同的值初始化的:

long lArray[][] = new long[(int) (lN+1)][(int) (lR+1)];

我认为你应该在这里有一个内部循环,例如:

   for(int i = 0; i <= lN; i++) {
for (int j=0; j<=lR; j++) {
lArray[i][j] = 1;
}
}

关于java - 二项式高效动态规划中的 ArrayIndexOutOfBounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com