Java 股票最大化算法中的指数越界
我已将以下内容尽可能地从Java翻译成C: 及 我得到的Java 股票最大化算法中的指数越界,java,c#,Java,C#,我已将以下内容尽可能地从Java翻译成C: 及 我得到的索引超出了数组的界限。错误我理解这个错误的意思,但我不知道该如何修复它。我花了很多时间才理解这段代码的第一部分,但对于第二部分,我感到不知所措 另外,JavapollFirst()方法的C#等价物是什么?可能是因为这一行 public void printTrans(double[,] dp, double[] prices, int K) { int i = K - 1;
索引超出了数组的界限
。错误我理解这个错误的意思,但我不知道该如何修复它。我花了很多时间才理解这段代码的第一部分,但对于第二部分,我感到不知所措
另外,Java
pollFirst()
方法的C#等价物是什么?可能是因为这一行
public void printTrans(double[,] dp, double[] prices, int K)
{
int i = K - 1;
int j = prices.Length; // <=== this line is the cause
或者,您需要更改创建阵列的方式
var dp = new double[K + 1, prices.Length]; // <-- prices.Length would have to change here
var dp=new double[K+1,prices.Length];//你得到的错误是哪一行?@MiguelSanchez我编辑了答案以显示错误发生的位置。假设你使用的是.NET,如果不是null,则调用错误发生的原因是你的j
变量超出了2D数组的边界,请更正您的代码以确保它在限制范围内,因为我觉得自己很笨。谢谢你的帮助!
for (int z = j - 1; z >= 0; z--)
{
if (dp[i - 1, z] - prices[z] == maxDiff)
public void printTrans(double[,] dp, double[] prices, int K)
{
int i = K - 1;
int j = prices.Length; // <=== this line is the cause
int j = prices.Length - 1;
var dp = new double[K + 1, prices.Length]; // <-- prices.Length would have to change here