更改矩阵后,为什么我的JS路径查找器算法不起作用

时间:2019-08-28 18:59:14

标签: javascript arrays matrix logic path-finding

我必须编写一个运行矩阵的代码,以查找到'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

0 个答案:

没有答案