Leetcode不接受正确的数独解算器算法。

问题描述 投票:0回答:1

我用Javascript写了一个数独解算器,用于解决以下问题 https:/leetcode.comproblemssudoku-solversolution. 每当我在leetcode以外的IDE中使用同样的代码时,它都能很好地解决数独棋盘的问题,但当我在leetcode中提交它作为答案时,它总是返回一个在函数中传递的默认棋盘参数。然而,当我在leetcode中提交它作为答案时,它总是返回一个传递给函数的默认板参数。谁能找出原因?

注:leetcode问题中说要原地解板,不要返回任何东西。

错误:imgur.coma63v7sOu

/**
 * @param {character[][]} board
 * @return {void} Do not return anything, modify board in-place instead.
 */

var solveSudoku = function(board) {
    function check(y, x, n, board){
        // Search column for n
        for (let i = 0; i < 9; i++){
            if (board[y][i] == n) return false;
        }
        // Search row for n
        for (let i = 0; i < 9; i++){
            if (board[i][x] == n) return false;
        }

        const row = Math.floor(x / 3) * 3;
        const col = Math.floor(y / 3) * 3;

        for (let i = 0; i < 3; i++){
            for (let j = 0; j < 3; j++){
                if (board[col+i][row+j] == n) return false;
            }
        }
        return true;
    }
    function solve(board){
        for (let y = 0; y < 9; y++){
            for (let x = 0; x < 9; x++){
                if (board[y][x] === "."){
                    for (let n = 1; n < 10; n++){
                        if(check(y, x, n, board)){
                            board[y][x] = n.toString();
                            solve(board);
                            board[y][x] = ".";
                        }
                    }
                    return;
                }
            }
        }
    }
    solve(board)
}
javascript algorithm recursion sudoku
1个回答
0
投票

solveSudoku 并没有做任何事情,它只定义了两个函数。呼叫 solve(board) 在功能体中。

© www.soinside.com 2019 - 2024. All rights reserved.