亚里仕多德 2020-07-06 17:05 采纳率: 100%
浏览 220
已结题

javaScript 两个for循环修改二维列表数值直接一列修改

2020/7/7

抱歉各位,可能是我的表达不清,我不是对于这道题有疑惑,是在写这道题的过程中我发现我的结果有误,向各位请教问题出在哪里了。

重申一下我的问题:我的问题是为什么我对于二维列表中的一个元素进行值的修改,却是一整个列的元素值都被修改了呢?

问题出在了--->我在初始化的过程中使用同一个一维列表对于二维列表进行赋值,导致了多个行其实指向了同一个地址,因此出现这样的问题,感谢各位的帮助!



初学javascript,使用leetcode写题来加深掌握,见leetcode.T63。方法很明确,动态规划,但是在初始化上使用了多加一行一列来保存状态,但是在循环的过程中出现了问题,一次循环应该改变列表中一个元素的值却整个列被改变,不知道原因。

// Algorithm, 最基本的循环
    for(i=1;i<=r;i++){
        for(j=1;j<=c;j++){
            console.log("add result",dp[i-1][j] + dp[i][j-1])
            dp[i][j]  = dp[i-1][j] + dp[i][j-1];
            console.log(i,j,dp);
        }
    }


将结果进行了打印

// result
add result -2
1 1 [
  [ -1, -1, -1, -1 ],
  [ -1, -2, 0, 0 ],
  [ -1, -2, 0, 0 ],
  [ -1, -2, 0, 0 ]
]
add result -3
1 2 [
  [ -1, -1, -1, -1 ],
  [ -1, -2, -3, 0 ],
  [ -1, -2, -3, 0 ],
  [ -1, -2, -3, 0 ]
]


不知道是不是自己初始化的问题,弄了一下午还是错的。希望有人能帮帮忙

// 源代码
/**
 * @param {number[][]} obstacleGrid
 * @return {number}
 */
var uniquePathsWithObstacles = function(obstacleGrid) {
    // Initilization
    const r = obstacleGrid.length;
    const c = obstacleGrid[0].length;
    const tt = new Array();
    for(i=0;i<=c;i++)
    {
        tt[i] = -1;
    }
    const t = new Array();
    for(i=0;i<=c;i++)
    {
        t[i] = 0;
    }
    const dp = new Array();
    dp[0] = tt;
    for(i=1;i<=r;i++)
    {
        dp[i] = t;
        dp[i][0] = -1;        
    }

    // Algorithm 
    for(i=1;i<=r;i++){
        for(j=1;j<=c;j++){
            console.log("add result",dp[i-1][j] + dp[i][j-1])
            dp[i][j] = dp[i-1][j] + dp[i][j-1];
            console.log(i,j,dp);
        }
    }
    // console.log(dp);
    return dp[r][c];

};
  • 写回答

5条回答 默认 最新

  • 浴火_凤凰 2020-07-06 17:16
    关注

    没看懂要做什么。。。说一下你想实现什么吧。。

    评论

报告相同问题?

悬赏问题

  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里