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

算法-回溯

通用模板

/* 回溯算法框架 */voidbacktrack(Statestate,List<Choice>choices,List<State>res){// 判断是否为解if(isSolution(state)){// 记录解recordSolution(state,res);// 不再继续搜索return;}// 遍历所有选择for(Choicechoice:choices){// 剪枝:判断选择是否合法if(isValid(state,choice)){// 尝试:做出选择,更新状态makeChoice(state,choice);backtrack(state,choices,res);// 回退:撤销选择,恢复到之前的状态undoChoice(state,choice);}}}

与图深度优先搜索对比:

/* 深度优先遍历辅助函数 */voiddfs(GraphAdjListgraph,Set<Vertex>visited,List<Vertex>res,Vertexvet){res.add(vet);// 记录访问顶点visited.add(vet);// 标记该顶点已被访问// 遍历该顶点的所有邻接顶点for(VertexadjVet:graph.adjList.get(vet)){if(visited.contains(adjVet))continue;// 跳过已被访问的顶点// 递归访问邻接顶点dfs(graph,visited,res,adjVet);}}/* 深度优先遍历 */// 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点List<Vertex>graphDFS(GraphAdjListgraph,VertexstartVet){// 顶点遍历序列List<Vertex>res=newArrayList<>();// 哈希集合,用于记录已被访问过的顶点Set<Vertex>visited=newHashSet<>();dfs(graph,visited,res,startVet);returnres;}

图的宽度优先搜索:

/* 广度优先遍历 */// 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点List<Vertex>graphBFS(GraphAdjListgraph,VertexstartVet){// 顶点遍历序列List<Vertex>res=newArrayList<>();// 哈希集合,用于记录已被访问过的顶点Set<Vertex>visited=newHashSet<>();visited.add(startVet);// 队列用于实现 BFSQueue<Vertex>que=newLinkedList<>();que.offer(startVet);// 以顶点 vet 为起点,循环直至访问完所有顶点while(!que.isEmpty()){Vertexvet=que.poll();// 队首顶点出队res.add(vet);// 记录访问顶点// 遍历该顶点的所有邻接顶点for(VertexadjVet:graph.adjList.get(vet)){if(visited.contains(adjVet))continue;// 跳过已被访问的顶点que.offer(adjVet);// 只入队未访问的顶点visited.add(adjVet);// 标记该顶点已被访问}}// 返回顶点遍历序列returnres;}
http://www.jsqmd.com/news/1228235/

相关文章:

  • MongoDB Atlas + Voyage + LangGraph构建智能场地预订系统
  • GitHub假仓库BoryptGrab木马:攻防拆解+溯源排查+防御加固实战教程
  • 如何快速构建智能心理咨询机器人:efaqa-corpus-zh中文情感分析数据集终极指南
  • 3大核心技术解密:dxwrapper如何让经典游戏在Windows 10/11完美运行
  • 从TTS静默失败到流畅语音:我的Pixelle-Video声音重生记
  • Textract:企业级文档文本提取的Python解决方案与架构深度解析
  • 从Transformer到ChatGPT:大语言模型技术演进与应用
  • 定时器+计划同步情况测试记录
  • TMS320F28002x Boot ROM配置全解析:从原理到实战应用
  • 优麒麟24.04 LTS评测:国产Linux系统的性能突破与实战指南
  • 2026韶关刑事、民诉、企业法律顾问靠谱机构盘点 - 余生黄金回收
  • ADT数据泄露实战复盘:安防企业第三方风控、数据防护与应急SOP全教程
  • C++内存泄漏排查实战:从线上故障到完整解决方案
  • 鸣潮自动化解放双手:图像识别技术如何重塑游戏日常体验
  • 【JAVA毕设源码分享】基于springBoot的房屋租赁管理系统(程序+文档+代码讲解+一条龙定制)
  • 036-dayjs日期库在鸿蒙应用中的集成与最佳实践
  • 从零搭建AI搜索竞品分析体系,手把手教会你抓取真实Query日志、构造对比测试集、量化评估Ranking效果
  • 系统化排查报错信息的6步方法与高级调试技巧
  • 16.Python异常处理全解析:从案例入门到自定义异常
  • 如何在破解版Switch上免费创建无限虚拟Amiibo:emuiibo完全指南
  • TMS320F280015x I2C驱动调试:数字回环、NACK处理与中断系统详解
  • C++进制转换核心算法解析:从原理到竞赛实战应用
  • 2026年卓太丝网视角:广东韶关河道治理工程石笼网供应商挑选攻略与优质企业盘点 - 每天一杯纯牛奶
  • 2026年企业AI Agent工具深度评测:Codex国内替代方案横向对比
  • 推荐题目:洛谷 P6202 [USACO07CHN] Summing Sums G
  • 三步获取国家中小学智慧教育平台电子课本:教师与家长的智能下载指南
  • MetaBCI完全指南:如何用开源工具5步构建专业级脑机接口应用
  • 突破性解决方案:tchMaterial-parser让教育资源获取效率提升300%
  • Arduino物联网开发指南:5分钟掌握PubSubClient MQTT连接
  • 数字手写笔记革命:Xournal++如何彻底改变你的学习与工作方式?