#include <bits/stdc++.h> #include <vector> using namespace std; class Solution{ private: bool isValid(vector<vector<int>>& board,int row,int col,int num){ for(int i=0;i<9;i++) if(board[row][i]==num) return false; for(int i=0;i<9;i++) if(board[i][col]==num) return false; int startrow = row-row%3; int startcol = col-col%3; for(int i=0;i<3;i++) for(int j=0;j<3;j++) if(board[startrow+i][startcol+j]==num) return false; return true; } bool solve(vector<vector<int>>& board){ for(int i=0;i<9;i++) for(int j=0;j<9;j++){ if(board[i][j]==0){ for(int num=1;num<10;num++){ if(isValid(board,i,j,num)){ board[i][j]=num; if(solve(board)) return true;//继续向下进行 board[i][j]=0;//走不通便擦除,迭代填入下一个num } } return false;//如果全部num填入都不行,返回false,擦除并换值 } } return true; } public: void solvesolution(vector<vector<int>>& board){ solve(board); } }; 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]; } } Solution solution; solution.solvesolution(board); for(int i=0;i<9;i++) for(int j=0;j<9;j++) { cout<<board[i][j]<<" "; if(j==8) cout<<endl; } }