news 2025/12/28 14:21:53

代码随想录--6.回溯学习记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录--6.回溯学习记录

一些回溯的心得

也是让我蹭上困难level的题了,比较自豪的是截至目前已经尽力把所有问题往二叉树的结构方向靠拢,致力于只用一招破题。说白了就是travel中的for循环为当前节点所在层的遍历,而for内的travel则是当前节点往下走的延伸。需要注意的点就是针对不同场景,要考虑返回值是void还是bool(当然我个人还是喜欢void,bool实在难以得心应手),要找的方案是只有一个还是若干,这都会影响具体代码实现细节,比如if中需不需要return,for每次从哪开始,需不需要记录当前index并传参到下一次travel中。

最终需要的结果大都是二维vector,区别在于内里的vector是什么类型一般是int或者string,相比标准解法中的直接在string上操作,我更喜欢用vector<int>来进行处理,最后发现符合需求时再转换成vector<string>并纳入最终res中,事实上感觉这种不需要变化太多的处理流程我想称之为范式,只需要针对不同场景在细节处仔细斟酌即可,大方向都是一个套路,下面以N皇后为例

N皇后

整个代码是比较丝滑地写出来的,一气呵成,(当然也可能因为是上午做的,脑袋比较清醒,昨晚的安排行程那题就给我做破防了(后来怒刷韩剧去了,模范出租车还是太爽了看得),同为困难却也亦有差距啊)从看题到思索再到写出,唯一花时间的地方就是判断排兵布阵的合法性,最后跑通并对比标准答案后也证实了我这套范式的可行性,起码简约且舒适。

class Solution { public: bool isR(vector<int>& dis,int n,int target){ if(dis.empty())return true; if(find(dis.begin(),dis.end(),target)!=dis.end()) return false; for(int i=dis.size()-1;i>=0;i--){ if(abs(dis[i]-target)==dis.size()-i) return false; } return true; } vector<vector<string>> res; vector<int> dis; void travel(int n){ if(dis.size()==n){ string s(n,'.'); vector<string> sol(n,s); for(int i=0;i<n;i++){ sol[i][dis[i]]='Q'; } res.emplace_back(sol); } for(int i=0;i<n;i++){ if(isR(dis,n,i)){ dis.push_back(i); travel(n); dis.pop_back(); } } } vector<vector<string>> solveNQueens(int n) { travel(n); return res; } };

看完就发现来来回回无非就这么几套,满足条件如果复杂就写个isR()函数判断,简单就直接在for或者if中判断,然后记得travel前后操作保持对称,所以有的涉及到重复问题(标准答案给的是用used的vector记录)我都是懒得整直接最后输出res之后排序然后unique去重之类的。但这些重复的问题在未来肯定会经常碰到,都还缺乏对我而言舒适且真正稳固耐用的范式,所以之后n刷的时候需要重点考虑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/19 14:19:00

FaceFusion镜像提供SDK开发包供二次开发

FaceFusion镜像与SDK&#xff1a;从实验工具到工业级AI视觉基础设施的跃迁 在短视频内容爆炸式增长、虚拟偶像频繁出圈的今天&#xff0c;一张静态人脸如何“活”进另一段视频里&#xff0c;早已不再是影视特效师专属的高深技艺。越来越多的内容平台、直播工具甚至安防系统开始…

作者头像 李华
网站建设 2025/12/19 14:18:29

seekdb × AI 平台-打造真正的全链路:AI 应用开发者的“全能数据库”

11月18日&#xff0c;OceanBase开源了其首款AI原生数据库seekdb&#xff0c;这款专注于为AI应用提供高效混合搜索能力的数据库&#xff0c;正在悄然改变AI应用的开发方式。 AI 应用的核心不是模型本身&#xff0c;而是数据能否被高效检索、理解和关联。然而&#xff0c;在很长一…

作者头像 李华
网站建设 2025/12/19 14:16:38

性价比高的小户型精装修门窗品牌推荐怎么选

性价比高的小户型精装修门窗品牌推荐怎么选在小户型精装修中&#xff0c;门窗的选择至关重要。不仅要考虑美观性&#xff0c;更要注重性价比。那么&#xff0c;该如何挑选性价比高的小户型精装修门窗品牌呢&#xff1f;了解门窗材质不同的门窗材质在价格、性能和使用寿命上有很…

作者头像 李华
网站建设 2025/12/19 14:13:23

C018基于博途西门子1200PLC立体车库3X3控制系统仿真

C018基于博途西门子1200PLC立体车库3X3控制系统仿真C018立体车库3X3S71200HMI主电路图IO分配表参考文章资料包含&#xff1a; 1.程序和HMI仿真工程&#xff08;博图V15.1及以上版本可以打开&#xff09; 2.PLC端口定义IO分配表1份 4.主电路图CAD版本和PDF版本各1份 5.PLC程序PD…

作者头像 李华
网站建设 2025/12/19 14:10:53

10个高效降AI率工具,MBA学生必看!

10个高效降AI率工具&#xff0c;MBA学生必看&#xff01; AI降重工具&#xff1a;MBA论文的“隐形助手” 在当今学术环境中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;已经成为论文写作中不可忽视的一部分。对于MBA学生而言&#xff0c;如何在保持逻辑严谨和语言流畅的…

作者头像 李华
网站建设 2025/12/19 14:08:02

9、中美洲投资与房地产交易指南

中美洲投资与房地产交易指南 1. 萨尔瓦多投资情况 1.1 行政程序 外国投资者在萨尔瓦多仍面临繁琐的行政程序,例如需要向经济部注册。投资许可和注册程序可能需要数月时间,而且关于这些程序的信息难以获取,甚至可能相互矛盾。 1.2 金融账户与资金汇回 外国投资者可以在萨…

作者头像 李华