[Oracle] LeetCode 37 Sudoku Solver
Write a program to solve a Sudoku puzzle by filling the empty cells.
A sudoku solution must satisfy all of the following rules:
- Each of the digits
1-9
must occur exactly once in each row. - Each of the digits
1-9
must occur exactly once in each column. - Each of the digits
1-9
must occur exactly once in each of the 9 3x3 sub-boxes of the grid.
The '.
' character indicates empty cells.
Solution
对于每一个空缺的位置,我们需要遍历所有的数字进行
的时候我们需要对于所在行,所在列,以及小九宫格进行检查,这里注意九宫格检查的写法
点击查看代码
class Solution { private: bool check(char c, vector<vector<char>>& board, int row, int col){ for(int i=0;i<9;i++){ if(board[i][col]==c)return false; if(board[row][i]==c)return false; if(board[3*(row/3)+i/3][3*(col/3)+i%3]==c)return false; } return true; } bool dfs(vector<vector<char>>& board){ int nr = board.size(), nc = board.size(); for(int i=0;i<nr;i++){ for(int j=0;j<nc;j++){ if(board[i][j]=='.'){ for(char c = '1';c<='9';c++){ if(check(c,board,i,j)){ board[i][j]=c; if(dfs(board))return true; else board[i][j]='.'; } } return false; } } } return true; } public: void solveSudoku(vector<vector<char>>& board) { dfs(board); } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!