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

leetcode 37 解数独

一、问题描述

二、解题思路

整体思路

画出本题的决策树,可以采用回溯+剪枝的方法来解决这个问题。本题的剪枝策略与leetcode36有效的数独策略一致。leetcode 36 有效的数独-CSDN博客

具体思路

(1)函数功能:dfs函数用于从(row,col)开始,尝试填数字解出数独;

(2)递归出口:当row==9&&col==0,将found更新为true,直接return;

(3)函数体:

<1>在判断是否抵达递归出口之前,需要判断是否需要换行;

<2>如果当前位置的字符为数字字符,就dfs处理col+1位置;

<3>如果当前位置的字符为'.',就从'1'开始到'9'尝试填写这个位置,填写合法,就将当前位置对应的Col、Row、grid值赋值为true,再dfs处理col+1位置;

<4>如果找到答案了,就直接return。如果这里不return,函数回溯完成后,board会恢复到初始题目给的状态;

<5>否则,就回溯恢复现场;

三、代码实现

class Solution {bool Col[9][9]={false};bool Row[9][9]={false};bool grid[3][3][9]={false};bool found=false;public:void solveSudoku(vector<vector<char>>& board) {//遍历board,初始化三个bool数组for(int row=0;row!=9;row++)for(int col=0;col!=9;col++){if(board[row][col]!='.'){char c=board[row][col];Col[col][c-'1']=true;Row[row][c-'1']=true;grid[row/3][col/3][c-'1']=true;}}dfs(0,0,board);}void dfs(int row,int col,vector<vector<char>>& board){if(col==9){row++;col=0;}//递归出口if(row==9&&col==0) {found=true;return ;}//如果当前位置为数字字符if(board[row][col]!='.')  dfs(row,col+1,board);//如果当前位置不为数字字符else{for(int num=0;num!=9;num++){char c=num+'1';if(!Col[col][num]&&!Row[row][num]&&!grid[row/3][col/3][num]){board[row][col]=c;Col[col][num]=Row[row][num]=grid[row/3][col/3][num]=true;dfs(row,col+1,board);if(found) return;//恢复现场board[row][col]='.';Col[col][num]=Row[row][num]=grid[row/3][col/3][num]=false;}}}}
};

http://www.dtcms.com/a/442406.html

相关文章:

  • 105、23种设计模式之策略模式(14/23)
  • BLE 蓝牙连接参数详解
  • 手机版做我女朋友网站域名申请时间需要多久
  • 【ROS2学习笔记】URDF 机器人建模
  • 哈尔滨多语言网站建设jsp源码做网站
  • 【Linux学习笔记】线程概念和控制(三)
  • 第2集:技术选型的智慧:Flask vs FastAPI,GLM-4 vs GPT
  • 做pc端网站行业现状网站 建设设计方案
  • 【c++】初识STL和string类
  • 网站建设同行抄袭玖云建站系统
  • 24 小时开发 IDM 浏览器智能嗅探插件:从 0 到 1 的效率工具搭建指南
  • 如何查网站死链收费网站推广
  • 最好的图像编辑器有哪些?
  • 【开题答辩实录分享】以《基于Python的旅游网站数据爬虫研究》为例进行答辩实录分享
  • 深圳网站建设 设计科技网站维护属于什么部门
  • DAY25 综合案例
  • 计算机网络(三):物理层(通信基础、传输介质、物理层设备)
  • app优化网站怎么用手机搭建网站
  • 郑州网站建设灵秀网店代运营怎么做
  • 宝塔环境下upload目录按月增量同步至阿里云OSS自动化脚本
  • 公域流量转化困境下开源AI智能名片与链动2+1模式的S2B2C商城小程序应用研究
  • YOLO算法原理详解系列 第001期-YOLOv1 算法原理详解
  • 竞赛管理系统|基于SpringBoot和Vue的竞赛管理系统(源码+数据库+文档)
  • 镇江网站建设包括哪些传媒网站后台免费模板
  • linux学习笔记(13)文件操作
  • 爬虫反反爬1
  • 网站建设包括哪些服务济宁住房和城乡建设厅网站首页
  • 网站cms大全九江学网站建设
  • 【ROS2学习笔记】参数
  • 网站建设哪儿好营销策划方案的目的