当前位置: 首页 > ops >正文

LeetCode 37.解数独

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对于这题,首先考虑数独的解的条件是什么:每行、每列、每个九宫格中没有重复的数字。
那么在对每个空格进行填数时如何考虑其有效性?检查其所在行列及九宫格。
那么我们可以利用回溯,遍历所有空格,在其中填入可能的数字并检查有效性,递归调用解决下一个空格,如果后续路径失败,就将格子恢复原状。
代码如下:

class Solution {
public:bool isvalid(int r, int c, char k, const vector<vector<char>>& board){for(int i = 0;i<board[0].size();i++){if(board[r][i] == k) return false;}for(int i = 0;i<board.size();i++){if(board[i][c] == k) return false;}int ro = r/3, co = c/3;for(int i = ro*3;i<(ro+1)*3;i++){for(int j = co*3;j<(co+1)*3;j++){if(board[i][j] == k) return false;}}return true;}bool check(vector<vector<char>>& board){for(int i = 0;i<board.size();i++){for(int j = 0;j<board[0].size();j++){if(board[i][j] != '.') continue;for(char k = '1';k<='9';k++){if(isvalid(i, j, k, board)){board[i][j] = k;if(check(board)) return true;board[i][j] = '.';}}return false;}}return true;}void solveSudoku(vector<vector<char>>& board) {check(board);}
};
http://www.xdnf.cn/news/19332.html

相关文章:

  • k8s三阶段项目
  • 狂神说--Nginx--通俗易懂
  • 线程池八股文
  • 从零开始写个deer-flow-mvp-第一天
  • 拆分TypeScript项目的学习收获:处理编译缓存和包缓存,引用本地项目,使用相对路径
  • 粗糙表面接触模型MATLAB代码
  • 多租户配额与预算:限额、配额周期与突发桶的结算模型(Final)
  • 【机械故障】使用扭矩计算物体重量
  • web墨卡托的纬度范围为什么是85°S~85°N?
  • 为何重定义库函数会减少flash体积(从prinf讲解)
  • 为什么计算机使用补码存储整数:补码的本质
  • 【秋招笔试】2025.08.29阿里云秋招笔试题
  • 【Linux】动静态库的制作与原理
  • 第三十二天:数组
  • 刷算法题-数组-02
  • 关于Ctrl+a不能全选的问题
  • Wi-Fi技术——OSI模型
  • VS安装 .NETFramework,Version=v4.6.x
  • React Hooks useMemo
  • [强网杯2019]随便注-----堆叠注入,预编译
  • centos7挂载iscis存储操作记录
  • postman 用于接口测试,举例
  • postman带Token测试接口
  • DAY50打卡
  • Redis 持久化 AOF 与 RDB 的区别
  • Ruoyi-vue-plus-5.x第二篇MyBatis-Plus数据持久层技术:2.1 MyBatis-Plus核心功能
  • audioLDM模型代码阅读(五)—— pipeline
  • Python学习大集合:基础与进阶、项目实践、系统与工具、Web 开发、测试与运维、人工智能(视频教程)
  • 电力电子技术知识学习-----晶闸管
  • VSCode中使用Markdown