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

黄冈网站建设哪家快些宁波seo推广哪家好

黄冈网站建设哪家快些,宁波seo推广哪家好,广州专业网站建设有哪些,中山免备案网站建设本思路来自acwing算法提高课 题目描述 看本文需要准备的知识 1.dfs算法基本思想 2.对剪枝这个词有个简单的认识 迭代加深思想和此题分析 首先,什么是迭代加深呢?当一个问题的解有很大概率出现在递归树很浅的层,但是这个问题的解本身存在…

本思路来自acwing算法提高课

题目描述

看本文需要准备的知识

1.dfs算法基本思想

2.对剪枝这个词有个简单的认识

迭代加深思想和此题分析

首先,什么是迭代加深呢?当一个问题的解有很大概率出现在递归树很浅的层,但是这个问题的解本身存在着很深的层,当这个很浅的层的对应分支在搜索顺序比较靠后的位置时,我们就会先搜索前几个很深的层,导致浪费大量时间,迭代加深就是为了解决这个问题(如下图所示)而存在的

迭代加深具体思想非常简单,设置一个max_depth,每次搜索超过这个值直接return,如果搜完没搜到就逐步扩大max_depth

比如上面那个图,刚开始max_depth==1,对于左边那一堆,往下搜一个没搜到直接return,轮到第二个分支,往下搜一个,直接就找到答案了!如果答案在第二个分支的第二层,就会从最左边开始先往下搜两个没找到,就开始搜第二个分支往下看两个,就又找到了。

有人可能会问,这样反复搜之前搜过的部分,不会导致效率低吗?

举一个满二叉树的例子吧!

假设答案在第8层,在max_depth从1到8的过程中,会先搜索:

2^1+2^2+......+2^7<2^8

所以相对第8层而言,这个重复搜索不值一提

而对于这个题目,举一个例子:n=127时,可以是1,2,4,8,16,32,64,仅仅第7层就可以搜到,而如果按照正常搜索顺序去搜,举一个极端例子,可以这样:

1,2,填第三个时,可以填1+2=3,

1,2,3填第四个时,可以填1+3=4,

依次类推,甚至可以搜一百多层!!!相对于第7层而言,这做出了极大的优化!

最后我们可以发现,这有一种bfs的味道,感觉就像是迭代加深把dfs的优势和bfs做了融合一样

剪枝

本题可以做几个剪枝

1.优化搜索顺序,每层的搜索大的开始,这样分支数会减少

2.可行性剪枝,当某层上可能填入的数小于等于当前确定序列的最后一个数,或者大于n,那么就不选这个数

3.去掉冗余,比如1,2,3,4,该搜第五个数时,2+3=1+4所以如果1+4已经搜过就不用弄2+3了,故设立st数组,标记已经搜过的,下次再见时直接continue本次循环

本题感想

这道题目,对于st数组到底是每层初始化一次还是每棵递归树整体初始化一次这个问题,我思考了很长时间,虽然知道结果是前者,但始终找不到其中的原因,现在我想通了,找这个原因其实是没有必要的,而且是很难的,因为dfs层与层之间的调用会导致各种数组变量结果变化,我们寻找这种具体变化和影响是极其艰难的,所以我们需要做的事弄清st数组应该作用于什么地方就行了,本题st数组的目的就是仅仅为了排除二重循环的X[i]+X[j]相同的冗余问题,既然仅仅作用于二重循环,我们也仅仅需要在二重循环前面开一个st数组即可

代码

#include<iostream>
#include<cstring>
using namespace std;
const int N=110;
int path[N];
int n;
bool dfs(int u,int k)
{if(u==k)return path[u-1]==n;bool st[N];memset(st,0,sizeof st);for(int i=u-1;i>=0;i--){for(int j=i;j>=0;j--){int s=path[i]+path[j];if(s>n||s<=path[u-1]||st[s])continue;path[u]=s;st[s]=true;if(dfs(u+1,k))return true;}}return false;
}
int main()
{path[0]=1;while(cin>>n,n){int k=1;while(!dfs(1,k))k++;for(int i=0;i<k;i++)cout<<path[i]<<" ";cout<<endl;}return 0;
}

http://www.qdjiajiao.com/news/1443.html

相关文章:

  • 红鱼洞水库建设管理局网站长沙seo排名扣费
  • 如何做美食网站设计百度 营销推广怎么收费
  • 八方资源网做网站优化怎么样百度收录提交网站后多久收录
  • discuz网站伪静态设置线上卖护肤品营销方法
  • 代码网站怎么做的最新最好的磁力搜索
  • 怎样做免费企业网站足球世界排名前十
  • 跨境电子商务网页制作与网站建设企业品牌推广方案
  • 清河县做网站搜索引擎优化的主题
  • 福州软件园东莞网络优化哪家公司好
  • 模板演示网站成都seo服务
  • iis为网站子目录绑定二级域名品牌策划方案怎么做
  • 新手搭建网站教程视频广州seo推广优化
  • 网站建设价格怎么算广告公司主要做什么
  • 建设一个小游戏网站建站服务
  • 网站安排seo内部优化方案
  • 做印刷网站公司哪家好竞价托管 微竞价
  • phpcms动态网站模板自媒体怎么入门
  • 做网站的维护成本潍坊网站关键词推广
  • 建设部网站实名制举报北京网站优化体验
  • 青岛网站建站公司企业网站模板
  • 网站宣传的劣势恶意点击软件哪几种
  • 网站建设页面底部叫什么百度知道提问首页
  • 扫二维码直接进网站怎么做四年级下册数学优化设计答案
  • 网站建设到一半想换一家线上推广公司
  • 中国建设监理网站搜索引擎优化的含义和目标
  • 网站建设及小程序商城
  • 网站app开发如何提高百度关键词排名
  • 免费做网站谷歌搜索引擎首页
  • 手机端网站外部链接如何去优化网络营销专业毕业论文
  • 在上海做兼职在哪个网站好全国疫情高峰感染进度查询