题解 | #Sudoku#

Sudoku

https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1

#include <iostream>
using namespace std;
#include<vector>

//剪枝
bool isValid(vector<vector<int>>& board,int row,int col,int num){
    for(int i =0;i<9;i++){
        if(board[row][i]==num||board[i][col]==num){
            return false;
        }
        if(board[(row/3)*3+i/3][(col/3)*3+i%3]==num){
            return false;
        }
    }
    return true;
}

bool solveSudoku(vector<vector<int>>& board){
    for(int row = 0;row<9;row++){
        for(int col = 0;col<9;col++){//遍历数独矩阵

            if(board[row][col] == 0){//找到0,开始填空
                for(int num=1;num<=9;num++){
                    if(isValid(board, row, col, num)){
                        board[row][col] = num;
                        if(solveSudoku(board)){
                            return true;
                        }
                        board[row][col]=0;//当前的num无解,置零回溯选择下一个合适的num
                    }
                }

                return false;
            }
        }
    }
    return true;
}
int main() {
    vector<vector<int>> board(9,vector<int>(9));
    for(int i=0;i<9;i++){
        for(int j = 0;j<9;j++){
            cin>>board[i][j];
        }
    }

    if(solveSudoku(board)){
        for(int i=0;i<9;i++){
            for(int j=0;j<9;j++){
                cout<<board[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-26 20:06
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务