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

【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列

1.题目解析

2.讲解算法原理  

1.首先画出决策树,越详细越好

2.设计代码

  • 全局变量
    • List<List<Integer>> ret
    • List<Integer> path
    • boolean[] check 
  • dfs函数
    • 仅关心某一节点在干什么
  • 细节问题
  • 回溯
    • 干掉path最后一个元素
    • 修改check权限
  • 剪枝
    • check中为true的不能使用,要剪掉
  • 递归出口
    • 遇到叶子结点的时候,直接添加结果

3.编写代码 

class Solution {List<List<Integer>> ret;List<Integer> path;boolean[] check;public List<List<Integer>> permute(int[] nums) {ret=new ArrayList<>();path=new ArrayList<>();check=new boolean[nums.length];dfs(nums);return ret;}public void dfs(int[] nums){if(nums.length==path.size()){ret.add (new ArrayList<>(path));return;}for(int i=0;i<nums.length;i++){if(check[i]==false){path.add(nums[i]);check[i]=true;dfs(nums);//回溯,恢复现场check[i]=false;path.remove(path.size()-1);}}}
}

http://www.lryc.cn/news/523453.html

相关文章:

  • 使用傅里叶变换进行图像边缘检测
  • DDD FAQs梳理
  • 新星杯-ESP32智能硬件开发--SoC基础
  • WDM_OTN_基础知识_波分系统的网络位置
  • 计算机网络 (46)简单网络管理协议SNMP
  • Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩
  • 使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。
  • 20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识
  • 《Hands_On_LLM》8.3: 检索增强生成-RAG技术概论
  • CSS中样式继承+优先级
  • Vue进阶之旅:核心技术与页面应用实战(路由进阶)
  • 单片机存储器和C程序编译过程
  • Vue.js 动态设置表格最大高度的实现
  • Java测试开发平台搭建(九)前端
  • MySQL多表查询练习
  • 低代码运维与管理服务
  • 【机器学习:三十二、强化学习:理论与应用】
  • 解决wordpress媒体文件无法被搜索的问题
  • 【2024年华为OD机试】(B卷,100分)- 增强的strstr (Java JS PythonC/C++)
  • 【前端】CSS学习笔记
  • 项目架构调整,新增sunrays-combinations模块
  • linux网络编程11——线程池
  • MySQL - 主从同步
  • 基于微信小程序的安心陪诊管理系统
  • 深入剖析iOS网络优化策略,提升App性能
  • 游戏开发中常用的设计模式
  • 【PyCharm】远程连接Linux服务器
  • InVideo AI技术浅析(五):生成对抗网络
  • Spring自定义BeanPostProcessor实现bean的代理
  • 【HF设计模式】06-命令模式