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

回溯进阶(二):以解数独来深入了解映射

题目:

链接:

https://leetcode.cn/problems/sudoku-solver/

题解:

class Solution {public int[][] rows=new int[9][9];public int[][] cols=new int[9][9];public int[][][] grids=new int[3][3][9];public void solveSudoku(char[][] board) {//这一步是为了初始化行列宫。//为什么d要减去'1'而不是'0',为了不越界(0-8而不是1-9)for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(board[i][j]!='.'){int d=board[i][j]-'1';rows[i][d]=1;cols[j][d]=1;grids[i/3][j/3][d]=1;}}}traceBack(0,board);}public boolean traceBack(int pos,char[][] board){if(pos==81) return true;int i=pos/9;int j=pos%9;if(board[i][j]!='.') return traceBack(pos+1,board);//为什么要遍历从0到8?//这是可能存在的状态,在回溯思想中,提到了遍历是为了遍历所有可能转移的状态for(int d=0;d<9;d++){//这个判断表示:行,列,宫中若存在该数字,则为d为无效的,直接剪枝即可。if(rows[i][d]!=0 || cols[j][d]!=0 || grids[i/3][j/3][d]!=0) continue;rows[i][d]=1;cols[j][d]=1;grids[i/3][j/3][d]=1;board[i][j]=(char)(d+'1');if(traceBack(pos+1,board))  return true;rows[i][d]=0;cols[j][d]=0;grids[i/3][j/3][d]=0;board[i][j]='.';}return false;}
}
答疑点:

1.rows为什么要开辟9*9的空间?

答:第一个9代表9行,第二个9代表有这个位置有9种可能的结果(要搭配cols来看)

cols的第一个9代表9行,第二个9代表这个位置有9种可能的结果;

grids是339。前两个3*3表示3行3列构成一个宫,9表示这个位置有9种可能的结果

2.pos是什么意思?

答:是一种映射关系,将9*9的棋盘映射成一维数组(从0到80),这样行,列,宫就可以用pos来表示了:

  • 行:i=pos/9;
  • 列:j=pos%9;
  • 宫:i/3,j/3;

收获:

映射真的好用,这个pos直接将二维变成一维表示,yyds。很多复杂的回溯题,都是靠映射来化繁为简的。

在保证回溯结构不变的情况下,回溯问题不会很难,顺着回溯思路走即可,若不会回溯思路,可看这篇文章:

https://blog.csdn.net/2302_80396926/article/details/147764527?spm=1001.2014.3001.5501

相关文章:

  • 【ARM AMBA AHB 入门 3.1 -- AHB控制信号】
  • 分区器(1)
  • ERP进销存系统源码,SaaS模式多租户ERP管理系统,SpringBoot、Vue、UniAPP技术框架
  • 易境通海外仓系统:如何高效管理尾程派送订单?
  • win安装anaconda 并切换软件源
  • VIVADO IP核整理(二)——FFT
  • win11下pip安装matplotlib超时的问题解决
  • Android 10.0 SharedPreferences in credential encrypted storage are not avai
  • 《Python星球日记》 第46天:决策树与随机森林
  • 做 iOS 调试时,我尝试了 5 款抓包工具
  • 从图灵机到量子计算:逻辑可视化的终极进化
  • 动态规划之回文串问题
  • 『深夜_MySQL』数据库操作 字符集与检验规则
  • 格式工厂:一站式多媒体文件转换专家
  • 【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。
  • 分布式-基于数据库排他锁
  • RFID电子标签(芯片)及RFID射频识别技术深度解析
  • 软件工程学概述
  • 加速页面加载的全流程优化策略
  • 【MySQL】C语言访问数据库
  • 观察|天空之外的战场:官方叙事、新闻与社交平台中的印巴冲突
  • 深圳两家会所涉卖淫嫖娼各被罚7万元逾期未缴,警方发催告书
  • 看展览|2025影像上海艺博会:市场与当代媒介中的摄影
  • 正荣地产:董事会主席、行政总裁辞任,拟投入更多精力推动境内债重组等工作
  • 英国和美国就关税贸易协议条款达成一致
  • 特朗普政府拟终止太空污染研究,马斯克旗下太空公司将受益