首页 > 解决方案 > 为什么当我更改矩阵时我的 JS 路径查找器算法不起作用

问题描述

我必须编写一个运行矩阵的代码,以找到通向“9”的最佳路径(仅在这些路径之上行走,并避免零)

在下面的示例中,结果正确(5 个步骤),但是如果我更改矩阵元素的位置,结果就会出错..

我能做些什么?我很感激任何帮助。

var matrix = 
[[1,1,1,1],
[0,1,1,0],
[0,1,0,1],
[0,1,9,1],
[1,1,1,1]]

function runMatrix(matrix){
    newPos = 0;
    var resultr;
    var resultc;


    for( var i = 0, lenR = matrix.length; i < lenR; i++ ) {
        for(var j = 0, lenC = matrix[i].length; j < lenC; j++){
            if( matrix[i][j] == 9 ) {
                resultr = i;
                resultc = j;
                break;
            }
        }
    }

    for( var i = 0; i < resultr; i++ ) {
        var k = 0;
        if(matrix[i+1][k] == 1){
            if(matrix[i+1][k+1] == 9 || matrix[i+1][k-1] == 9){
                newPos = newPos + 2;
            }else{
                newPos = newPos + 1;
            }
        }else{
            for(k = 1; k < resultc; i++){
                if(matrix[i][k] == 1 || matrix[i][k] == 9){
                    newPos = newPos + 1
                    if(matrix[i+1][k] == 1){
                        if(matrix[i+1][k+1] == 9 || matrix[i+1][k-1] == 9){
                            newPos = newPos + 2;
                        }else{
                            newPos = newPos + 1;
                        }
                        i++;
                        break;
                    }
                }
            }
        }

    }
    console.log("Steps: "+newPos)
}
runMatrix(matrix)


更新 此矩阵不起作用,例如:

[[1,1,1,1],
[0,0,0,1],
[0,0,0,1],
[0,0,9,1],
[0,0,0,0]]

它返回 4

标签: javascriptarraysmatrixlogicpath-finding

解决方案


推荐阅读