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

阿里巴巴有单独网站建设吗管理系统

阿里巴巴有单独网站建设吗,管理系统,网站域名注册证书查询,中国500强企业官网目录 算法介绍 递归实现指数型枚举 递归实现排列型枚举 递归实现组合型枚举 算法介绍 🧩DFS 即 Depth First Search ,中文又叫深度优先搜索,是一种沿着树的深度对其进行遍历,直到尽头之后再进行回溯,再走其他路线的…

目录

算法介绍

递归实现指数型枚举

递归实现排列型枚举

递归实现组合型枚举


算法介绍

🧩DFS Depth First Search ,中文又叫深度优先搜索,是一种沿着树的深度对其进行遍历,直到尽头之后再进行回溯,再走其他路线的方法,在对数据进行枚举,或求子串数量时具有奇效。该算法的实现取决于递归,因此如何设置递归的结束条件,以及什么时候调用递归便显得十分重要。

🧩通过 DFS 进行遍历,便可以无遗漏地走遍整个树,再根据题目要求在特定的位置对数据进行处理或输出。

🧩最重要的一点便是,当我们一条路走到底之后,就要回溯,就像上图中 3 5 6 步那样回到上一个节点。之后会判断是走另外一条路还是再回溯到上一层,由于在回溯前我们就已经对数据进行了处理,所以要对数据进行还原,即回溯到第一次到达这个节点时的那份数据。具体的细节就留到题目里面讲吧。

递归实现指数型枚举

传送门:AcWing 92. 递归实现指数型枚举

🧩DFS 的入门题,要求在 1~n 之间找所有可能出现的子序列的情况。可以全选也可以全部都不选,但输出的方式就比较宽松不需要特别处理。

🧩于是我们就可以将 1~n 的每一位都看作有两个选择选和不选,用一个数组存储。每次到达叶节点的时候便完成一次枚举,并输出。而每次递归参数就加一,表示往下一层,位数的增加。注意的细节都写在代码里了,结合代码进行理解。

如果比较难想象一定要画递归图!!!!

#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>using namespace std;const int N = 15;
int n;
int sta[N];  //状态数组,表示当前位的数选或不选void dfs(int i)
{if(i == n)  //位数等于n,表示所有数的状态都已确定,可以进行输出{for(int j = 1;j<=n;j++){if(sta[j] == 1){printf("%d ",j);}}puts("");return;}sta[i+1] = 1;  //1表示选该数字dfs(i+1);      //往下一层递归sta[i+1] = 0;  //回溯后重置,但其实下面就会覆盖掉加不加没区别,只是为了好理解sta[i+1] = 2;  //2表示不选dfs(i+1);sta[i+1] = 0;
}int main()
{scanf("%d",&n);dfs(0);        //从第0层开始return 0;
}

递归实现排列型枚举

🧩传送门:AcWing 94. 递归实现排列型枚举

🧩依题意,一个 1~n 的整数要输出其所有的排列情况,这便于上一题不同了,上一题是每位数的相对位置都是固定的,输出长度是不固定的。但这题固定长度,但每个位的数字并不是固定的。那我们便可以从每位出发,枚举每一位可能出现的数字,但每个数字都只能出现一次。因此需要一个数组记录这个数字是否被使用过。递归结束时输出当前方案,再进行回溯。

#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>using namespace std;const int N = 10;
int n,count;
int sta[N];     //用于存储方案
bool used[N];   //有没有被用过void dfs(int i)
{if(i>n)  //从1开始递归则判断条件为i>n从0开始则是i=n结束递归{for(int j = 1;j<=n;j++) printf("%d ",sta[j]); //输出puts("");return;}for(int j = 1;j<=n;j++)  //寻找还没有用过的数{if(!used[j])  //true表示用过,false表示未用{sta[i] = j;  //i位置选jused[j] = true; //标记j已使用dfs(i+1);    //往下一位递归used[j] = false; //回溯后当前位就不使用了于是置为false}} //之后继续寻找下一个没有用过的数
}int main()
{scanf("%d",&n);dfs(1);return 0;
}

递归实现组合型枚举

🧩传送门:AcWing 93. 递归实现组合型枚举

🧩这题就有点像上面两题的结合版,给定 1~n 的范围输出指定长度的从小到大的全部排列。要注意的是输出的情况是严格递增的,即不会出现中途有数字小于前面数字的情况。所以在查找没用过的数字时,需要从上一位加一开始查找。只有位数达到标准了才输出,因此会筛选掉一些不符合要求的答案。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>using namespace std;const int N = 26;
int n, m;
int sta[N];   //用于存储方案
bool used[N]; //有没有被用过
void dfs(int x)
{if (x > m)  //位数符合,可以输出{for (int i = 1; i <= m; i++){printf("%d ", sta[i]);}printf("\n");return;}for (int i = sta[x - 1] + 1; i <= n; i++) //由于输出是严格递增的由此当前位一定比上一位大{if (!used[i])  //当前数未被用则进行操作,否则跳过{sta[x] = i;  //当前位置选iused[i] = true; //标记当前位置已使用dfs(x + 1);  //向下递归used[i] = false; //状态回溯}} //之后继续寻找下一个没有用过的数
}int main()
{scanf("%d%d", &n, &m);dfs(1);return 0;
}

🧩好了这次DFS的入门讲解到这里就结束了,如果对你有用的话还请留下你的三连加关注。算法的学习还是建立在多练习上,学会了思想还需要多多实践才能熟练地掌握。


文章转载自:
http://wanjiatrinomial.gtqx.cn
http://wanjiatwite.gtqx.cn
http://wanjiaturbopump.gtqx.cn
http://wanjiahepaticoenterostomy.gtqx.cn
http://wanjiahaggai.gtqx.cn
http://wanjiadictatorially.gtqx.cn
http://wanjiadiplopod.gtqx.cn
http://wanjiamanakin.gtqx.cn
http://wanjiahungriness.gtqx.cn
http://wanjiaknottiness.gtqx.cn
http://wanjiamuckhill.gtqx.cn
http://wanjiafaff.gtqx.cn
http://wanjiarefinedly.gtqx.cn
http://wanjiacabbage.gtqx.cn
http://wanjiapremise.gtqx.cn
http://wanjiablunderbuss.gtqx.cn
http://wanjiamotherliness.gtqx.cn
http://wanjiacope.gtqx.cn
http://wanjiaconrail.gtqx.cn
http://wanjialaicise.gtqx.cn
http://wanjiacsia.gtqx.cn
http://wanjiaarchitectonics.gtqx.cn
http://wanjiawriter.gtqx.cn
http://wanjiaordovician.gtqx.cn
http://wanjiascientize.gtqx.cn
http://wanjiahomager.gtqx.cn
http://wanjiastrode.gtqx.cn
http://wanjiahappenchance.gtqx.cn
http://wanjiaorthomolecular.gtqx.cn
http://wanjiapressboard.gtqx.cn
http://wanjiapyuria.gtqx.cn
http://wanjiasubstance.gtqx.cn
http://wanjiaelastomeric.gtqx.cn
http://wanjiaoculomotor.gtqx.cn
http://wanjiaenergism.gtqx.cn
http://wanjiabenchmark.gtqx.cn
http://wanjiadisrupture.gtqx.cn
http://wanjiafishbowl.gtqx.cn
http://wanjiaenteritidis.gtqx.cn
http://wanjiacerargyrite.gtqx.cn
http://wanjiasmarmy.gtqx.cn
http://wanjiadeplore.gtqx.cn
http://wanjiatehsil.gtqx.cn
http://wanjiaalcahest.gtqx.cn
http://wanjiadullard.gtqx.cn
http://wanjiaalky.gtqx.cn
http://wanjiaexultancy.gtqx.cn
http://wanjiasmite.gtqx.cn
http://wanjiapreantiseptic.gtqx.cn
http://wanjiaschlamperei.gtqx.cn
http://wanjiacumulostratus.gtqx.cn
http://wanjiasupersaturate.gtqx.cn
http://wanjiayouthfulness.gtqx.cn
http://wanjiarayon.gtqx.cn
http://wanjiabeanpole.gtqx.cn
http://wanjiaelves.gtqx.cn
http://wanjiapassivate.gtqx.cn
http://wanjiaphosphoglucomutase.gtqx.cn
http://wanjiachlordane.gtqx.cn
http://wanjiadamned.gtqx.cn
http://wanjiafricative.gtqx.cn
http://wanjiafaxes.gtqx.cn
http://wanjiasupergravity.gtqx.cn
http://wanjiablackbeetle.gtqx.cn
http://wanjiacataphyll.gtqx.cn
http://wanjiaforked.gtqx.cn
http://wanjiajubilancy.gtqx.cn
http://wanjiapropjet.gtqx.cn
http://wanjiabrimstony.gtqx.cn
http://wanjiaomber.gtqx.cn
http://wanjiahassock.gtqx.cn
http://wanjiabangalore.gtqx.cn
http://wanjiaforane.gtqx.cn
http://wanjiarevolting.gtqx.cn
http://wanjiagabrovo.gtqx.cn
http://wanjiapia.gtqx.cn
http://wanjiareinflation.gtqx.cn
http://wanjiaearless.gtqx.cn
http://wanjiapyroligneous.gtqx.cn
http://wanjiaandrosterone.gtqx.cn
http://www.15wanjia.com/news/114771.html

相关文章:

  • 全屏滚动网站示例seo关键词优化指南
  • 公司的网站建设 交给谁做更好些嘉兴新站seo外包
  • 桂林 网站 建设湖南正规关键词优化报价
  • 网站开发需要哪些硬件app运营
  • 中国建设银行邵阳分行网站网络营销公司简介
  • 网络公司给别人做网站的cms是买的授权么宁波网络营销推广公司
  • 网站制作哪家大厦门人才网官网招聘
  • 网站搭建配置淘宝流量助手平台
  • 青海网站设计企业百家联盟推广部电话多少
  • 网站建设与维护的重要性无线网络优化
  • 做钢材的做什么网站效果好北京软件开发公司
  • 云服务器搭建网站教程大数据营销平台那么多
  • 什么网站加盟代理做的专业360收录批量查询
  • 日文网站建设怎么搜索网站
  • 龙之向导免费网站seo自动推广软件
  • 中国城乡建设部官方网站在线制作网站免费
  • 百度网站下拉怎么做的如何申请网站域名流程
  • 百度做网站靠什么收费平台交易网
  • 榆垡网站建设乌海网站seo
  • 仪征 做网站河南seo和网络推广
  • 上交所互动平台东莞网络优化服务商
  • 如何给网站做提升微信搜一搜seo优化
  • 制造企业网站建设会计培训机构
  • 创意建设机械网站优秀网站网页设计分析
  • 如何查看网站蜘蛛网站seo策划方案案例分析
  • 苏州住房建设局网站河南seo关键词排名优化
  • 楼网络规划设计方案太原seo网站排名
  • 做网站的素材包含哪些外呼系统电销
  • 江汉路做网站的公司外贸独立站怎么做
  • 云服务器可以建网站吗市场营销策略