每个元素都应该遍历,但显然不是

Every element should be traversed but apparently not

提问人:Tanmay Gupta 提问时间:7/13/2023 最后编辑:RobTanmay Gupta 更新时间:7/13/2023 访问量:12

问:

这部分应该遍历所有内容,但我没有弄错

class Solution 
{
    public boolean isValidSudoku(char[][] board) 
    
    {
    
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                if(board[i][j]!='.')
                {
                    if(!isValid(board,i,j,board[i][j]))
                    return false;
                }
            }
        }
        return true;
        
    }

    static boolean isValid(char[][] board,int row,int col,char ch) 
    {   
        //row
        for (int i = 0; i < 9; i++) 
        {
            if (board[i][col] == ch) 
            {
                return false;
            }
        }
        //col
        for (int i = 0; i < 9; i++) 
        {
            if (board[row][i] == ch) 
            {
                return false;
            }
        }
        // 3x3 Grid
        int r = (row/3)*3;
        int c = (col/3)*3;
        for (int i = r; i < r+3; i++) 
        {
            for (int j = c; j < c+3; j++) 
            {
                if (board[i][j] == ch) 
                {
                    return false;
                }
            }
        }

        return true;
    }
}ere

我做过类似的问题,但是通过回溯,它正在工作,尽管我更容易做到这一点

我以为每个元素都在被遍历,但显然没有,请帮忙。

递归 回溯 数独

评论

0赞 Tim Roberts 7/13/2023
这是 Java 还是 C#?你应该标记它。
0赞 Tim Roberts 7/13/2023
我不认为这是在做你的意图。如果单元格已填充,则将该单元格的当前值传递给 。当然,该数字将在行和列中找到,因为您是从那里得到的。当然,您要做的是找到单元格等于的位置,并调用每个可能的数字。isValid'.'isValid

答:

0赞 Tim Roberts 7/13/2023 #1

我很确定你有一个 ==/!= 混淆。在这里,我将其重命名为“makeValidMove”。如果要进行有效的移动,则执行该移动并返回 false。否则,它将返回 true。isValidSudoku

class Solution 
{
    public boolean makeValidMove(char[][] board) 
    {
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                if(board[i][j]=='.')
                {
                    for( char n='1'; n<='9'; n++ )
                    {
                        if(isValid(board,i,j,n))
                        {
                            // Make this move.
                            board[i][j] = n;
                            return false;
                        }
                    }
                    // There are no valid moves for this cell.
                }
            }
        }
        return true;
    }
...