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

岳阳市城市建设投资公司网站利用qq 群做网站推广

岳阳市城市建设投资公司网站,利用qq 群做网站推广,南京百度小程序开发,h5响应式网站开发成本穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝 1. 全排列2. 子集 1. 全排列 题目链接:46. 全排列 算法原理: 画出决策树 设计函数 全局变量:二维数组ret存储结果;一维数组path存储路径;boolean类型一维数组visited表示当…

穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝

  • 1. 全排列
  • 2. 子集

1. 全排列

题目链接:46. 全排列

算法原理:

  1. 画出决策树
    在这里插入图片描述

  2. 设计函数

  • 全局变量:二维数组ret存储结果;一维数组path存储路径;boolean类型一维数组visited表示当前节点是否已经被使用
  • 深度优先遍历dfs,当某个节点被使用后,标记为true
  • 剪枝:当某个节点已经被使用过时,该分支剪掉
  • 回溯:visited[i] 回溯为 false,path的最后一个元素删除
  • 递归的出口:当path的大小和nums的大小相等时,将path存入ret中,并返回

实现代码:

class Solution {public List<List<Integer>> ret;public List<Integer> path;boolean[] visited;public List<List<Integer>> permute(int[] nums) {ret = new ArrayList<>();path = new ArrayList<>();visited = new boolean[nums.length];dfs(nums);return ret;}private void dfs(int[] nums) {if(path.size() == nums.length) {//将路径添加进结果中ret.add(new ArrayList<>(path));return;}for(int i = 0; i < nums.length; i++) {//当当前节点未使用时if(!visited[i]) {path.add(nums[i]);//添加当前节点到路径中visited[i] = true;//标记当前节点已经使用dfs(nums);//回溯visited[i] = false;path.remove(path.size() - 1);}}}
}

2. 子集

题目链接:78. 子集

算法流程:
解法一:

  1. 画出决策树:以数组[1, 2, 3]为例,对每个元素分为不选两种操作
    在这里插入图片描述由此可知,决策树的叶子节点就是该数组的子集

  2. 设计代码

  • 全局变量:一维数组path存储所经过的路径,二维数组ret存储所得的结果
  • dfs:函数头dfs(int[] nums, int i),分为选择nums[i]和不选择nums[i],选择nums[i]所需进行的操作为path尾部加入nums[i]。并dfs(nums, i+1);不选择nums[i]所需进行的操作为dfs(nums, i+1)
  • 细节问题:剪枝,回溯,递归出口。这道题不需要剪枝;回溯操作为删除path尾部的元素;递归出口为i == nums.length,将该路径存到ret中,返回

实现代码:

class Solution {public List<Integer> path;public List<List<Integer>> ret;public List<List<Integer>> subsets(int[] nums) {path = new ArrayList<>();ret = new ArrayList<>();dfs(nums, 0);return ret;}private void dfs(int[] nums, int i) {if(i == nums.length) {ret.add(new ArrayList<>(path));return;}dfs(nums, i+1);path.add(nums[i]);dfs(nums, i+1);path.remove(path.size()-1);}
}

解法二:
算法流程:

  1. 画出决策树:以数组[1, 2, 3]为例,分为选择0,1,2,3个元素
    在这里插入图片描述
    在进行下一步选择元素时,只能去选择上一步所选元素后面的元素

  2. 设计代码

  • 全局变量:一维数组path存储所经过的路径,二维数组ret存储所得的结果
  • dfs:函数头dfs(int[] nums, int pos),pos代表上一步所选元素后面一个元素的下标
  • 细节问题:回溯,即删除path尾部的元素

实现代码:

class Solution {public List<Integer> path;public List<List<Integer>> ret;public List<List<Integer>> subsets(int[] nums) {path = new ArrayList<>();ret = new ArrayList<>();dfs(nums, 0);return ret;}private void dfs(int[] nums, int pos) {ret.add(new ArrayList<>(path));for(int i = pos; i < nums.length; i++) {path.add(nums[i]);dfs(nums, i+1);path.remove(path.size()-1);}}
}
http://www.dtcms.com/a/539755.html

相关文章:

  • 网站建设是否需形成无形资产wordpress 翻译语言
  • dwcc2017做网站教程wordpress账号创建
  • 做满屏网站的尺寸怀化汽车网站
  • 做羞羞事的网站有哪些凡客生活
  • 成都网络公司网站建设ps做网站 字体多大
  • 什么网站 是cms系统下载地址马鞍山网站建设推广
  • 枣庄定制网站建设制作wordpress和phpmyadmin
  • 做一个论坛网站多少钱wordpress播放视频该插件不支持
  • 网站做ppt模板下载地址wordpress图片转文字
  • 海口免费自助建站模板装修图片
  • 网站修改关键词温州网站制作设计
  • o2o平台有哪些网站网站建设 推广找山东博达
  • 如何恢复网站首页的排名 站长wechat wordpress
  • 查企业信息的国家网站网站备案手续
  • 网站到期查询临沧网站制作
  • 青岛网站设计制作婚纱摄影网页制作
  • 单页网站 产品放哪saas建站是什么意思
  • 网络专业的网站建设广西seo搜索引擎优化
  • 网站商品图片怎么做ps免费模板网站
  • 新网站怎样做优化建设网站空间多少钱
  • 响应式网站移动端排名网站怎么做seo步骤
  • 网站如何做301转向wordpress ios7
  • 网站设计制作是什么icp备案网站快速备案专家
  • 建设银行网站上不去了wordpress 后台添加js
  • 合肥知名网站制作手机网站懒人模板
  • 界面做的最好的网站wordpress阅读全部功能
  • 网站做好了如何发布文创产品设计是什么意思
  • 手机怎么搭建网站北京别墅设计网站
  • 淮安汽车网站制作有专门做几口农机的网站
  • 珠海市建设局网站きょこんきょうしゃ在线