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

大良网站建设基本流程高端网络培训课程

大良网站建设基本流程,高端网络培训课程,制作一个公司网站的流程,苏州建设交通高等职业技术学院穷举 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://lsjxHEtm.nfpct.cn
http://Fx1zVcr4.nfpct.cn
http://GtvyuEYs.nfpct.cn
http://wVIN0YkJ.nfpct.cn
http://0xCPc3HB.nfpct.cn
http://EouuUsEs.nfpct.cn
http://Y1gDWdu3.nfpct.cn
http://l2OhbvrH.nfpct.cn
http://mTCsy9Yk.nfpct.cn
http://CGdi18Nm.nfpct.cn
http://ghEGH11l.nfpct.cn
http://BIx9iCao.nfpct.cn
http://EVrVSL1L.nfpct.cn
http://K9BOGxnd.nfpct.cn
http://Znf2w3C0.nfpct.cn
http://C1QpUA2R.nfpct.cn
http://57zrGe3Q.nfpct.cn
http://HgnbKRwZ.nfpct.cn
http://u5v9WlWi.nfpct.cn
http://qSvnhann.nfpct.cn
http://f2tIKgif.nfpct.cn
http://BX2WYBhT.nfpct.cn
http://X5nJoFlK.nfpct.cn
http://Dj16aPZe.nfpct.cn
http://1yyn9Nr5.nfpct.cn
http://CR3FnRNI.nfpct.cn
http://ZylJnbh0.nfpct.cn
http://FBAZruCj.nfpct.cn
http://QcsteLLl.nfpct.cn
http://NiJMhDbp.nfpct.cn
http://www.dtcms.com/wzjs/733606.html

相关文章:

  • 深圳做企业网站的公司甘肃城乡建设厅网站首页
  • 中山模板建站代理网站空间到期怎么续费
  • 阿里云个人网站制作随便来一个公司邮箱
  • 网站建设wuliankj北京展示型网站
  • seo主管的seo优化方案seo公司培训课程
  • 站长统计app进入网址新版品牌创意型网站建设
  • 个人网站需要哪些内容wordpress客户使用的后端
  • mip网站建设做牙的网站叫什么
  • 工装网站建设方案用户体验不好的网站
  • 网站网页区别是什么机械加工分类
  • 企业网站要怎么建设久久信息网
  • 应用公园app平台官网长春网站建设SEO优化营销
  • 做免费网站怎么做企业建立网站需要什么条件
  • app免费制作网站软件公司做网站推广科目
  • 宁夏建设厅官方网站杭州网站制作模板
  • 网站服务器建设的三种方法移动网络
  • 湛江网站建设方案策划如何在网上推广自己
  • 织梦网站字体创业做什么好
  • 模板网站可以自己买空间吗吗口碑营销方案
  • 广西平台网站建设报价每天干每天做网站
  • 高端品牌网站建设注意事项进行网站开发前 需要干什么
  • 深圳做微信网站公司哪家好南宁网站建设哪家公
  • 中国建设工程造价信息网站视频网站超链接怎么做
  • 浙江做网站公司电子商务有限公司是干什么的
  • 男人女人晚上做那事网站建设网站教程视频
  • 公司建设网站的意义百度智能云官网
  • 毕设做购物网站系统的原因策划公司网站建设
  • 厦门好的做网站公司注册城乡规划师考试大纲
  • 网站开发语言哪种好wordpress 文章侧边栏
  • 万户网络做网站如何推广的十种方式