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

网站备案问题天津百度网站排名优化

网站备案问题,天津百度网站排名优化,网上做结婚照的网站,php网站开发案例教程递归型枚举与回溯剪枝初识 1.枚举子集2.组合型枚举3.枚举排列4.全排列问题 什么是搜索?搜索,是一种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候也叫作暴搜。搜索一般分为深度优先搜索…

递归型枚举与回溯剪枝初识

  • 1.枚举子集
  • 2.组合型枚举
  • 3.枚举排列
  • 4.全排列问题

  1. 什么是搜索?搜索,是一种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候也叫作暴搜。搜索一般分为深度优先搜索(DFS)与宽度优先搜索(BFS)。
  2. 深度优先遍历 vs 深度优先搜索,宽度优先遍历 vs 宽度优先搜索。遍历是形式,搜索是目的。不过,在一般情况下,我们不会去纠结概念的差异,两者可以等同。
  3. 回溯与剪枝
  • 回溯:当在搜索的过程中,遇到走不通或者走到底的情况时,就回头。
  • 剪枝:在搜索过程中,剪掉重复出现或者不是最优解的分。

递归型枚举与回溯剪枝初识:

  • 画决策树
  • 根据决策树写递归

搜索的本质:对决策树进行一次遍历,直到将所有的情况搜集到为止。

1.枚举子集

B3622 枚举子集(递归实现指数型枚举)

在这里插入图片描述

解法:深搜

设一共有 3 人,分别是 1,2,3。「从前往后」考虑每一个人,针对当前这个人「选」或者「不选」,我们可以画出如下「决策树」:

在这里插入图片描述

设计递归函数:

  1. 重复子问题:针对某一位,「选」或者「不选」。因为最终结果要按照「字典序」输出,我们可以「先考虑不选」,然后「再考虑选」。
  2. 实现方式参考代码和注释,结合「决策树」一起看会很清晰。
#include<iostream>
#include<string>
using namespace std;const int N = 11;int n;
string path; //记录递归过程中,每⼀步的决策void dfs()
{if(path.size() == n){cout << path << endl; //path存着前n个⼈的决策 return;}//不选path += 'N';dfs();path.pop_back(); //回溯:恢复现场//选path += 'Y';dfs(); path.pop_back(); //回溯:恢复现场
}int main()
{cin >> n;dfs();return 0;
}

2.组合型枚举

P10448 组合型枚举

在这里插入图片描述

解法:深搜

设 n = 4, m = 3,「从前往后」考虑 3 个位置应该选哪个数,我们可以画出如下决策树:

在这里插入图片描述

设计递归函数:

  1. 重复子问题:当前这一位,应该放哪个数上去。因为这是一个「组合」问题,不涉及排列,所以我们当前位置开始放的数,应该是「上次决策的数的下一位」。
  2. 实现方式参考代码和注释,结合「决策树」一起看会很清晰。
#include<iostream>
#include<vector>
using namespace std;int n, m;
vector<int> path; //记录递归过程中,每⼀步的决策void dfs(int pos)
{if(path.size() == m){for(auto& e : path) cout << e << " ";cout << endl;return;}for(int i = pos; i <= n; i++){path.push_back(i);dfs(i + 1);path.pop_back(); //回溯:恢复现场}
}int main()
{cin >> n >> m;dfs(1);return 0;
}

3.枚举排列

B3623 枚举排列(递归实现排列型枚举)

在这里插入图片描述

解法:深搜

设 n = 3, k = 2,一共要选出两个数,可以依次「考虑要选出来的数」是谁,画出如下决策树:

在这里插入图片描述

设计递归函数:

  1. 重复子问题:考虑这一位要放上什么数。因为是「排列」问题,所以我们直接从 1 开始枚举要放的数。
  2. 剪枝:在这一条路径中,我们「不能选择之前已经选择过的数」,需要用到辅助数组
  3. 实现方式参考代码和注释,结合「决策树」一起看会很清晰。
#include<iostream>
#include<vector>
using namespace std;const int N = 15;int n, k;
vector<int> path; //记录递归过程中,每⼀步的决策
bool vis[N]; //辅助数组:标记哪些数已经选过 void dfs()
{if(path.size() == k){for(auto& e : path) cout << e << " ";cout << endl;return;}for(int i = 1; i <= n; i++){if(vis[i] == false){vis[i] = true;path.push_back(i);dfs();//回溯:恢复现场path.pop_back();vis[i] = false;}}
}int main()
{cin >> n >> k;dfs();return 0;
}

4.全排列问题

P1706 全排列问题

在这里插入图片描述

解法:深搜

跟上一道题的决策一样,我们可以枚举每一位应该放上什么数,只不过少了 k 的限制。剪枝的策略还是一样的,那就是在路径中,「不能选择之前已经选过的数」。

在这里插入图片描述

#include<iostream>
#include<vector>
using namespace std;const int N = 15;int n;
vector<int> path; //记录递归过程中,每⼀步的决策
bool vis[N]; //辅助数组:标记哪些数已经选过void dfs()
{if(path.size() == n){for(auto& e : path) printf("%5d", e);cout << endl;return;}for(int i = 1; i <= n; i++){if(vis[i] == false){vis[i] = true;path.push_back(i);dfs();//回溯:恢复现场path.pop_back();vis[i] = false;}}
}int main()
{cin >> n;dfs();return 0;
}

文章转载自:
http://subcollege.yrpg.cn
http://sundries.yrpg.cn
http://nepotism.yrpg.cn
http://ionium.yrpg.cn
http://soapery.yrpg.cn
http://prakrit.yrpg.cn
http://uniquely.yrpg.cn
http://exoergic.yrpg.cn
http://sawback.yrpg.cn
http://unrepented.yrpg.cn
http://oar.yrpg.cn
http://niton.yrpg.cn
http://texel.yrpg.cn
http://denitrator.yrpg.cn
http://curriculum.yrpg.cn
http://decompensation.yrpg.cn
http://haploidy.yrpg.cn
http://misspelling.yrpg.cn
http://faucet.yrpg.cn
http://ungula.yrpg.cn
http://gonorrhea.yrpg.cn
http://scalawag.yrpg.cn
http://lymphoid.yrpg.cn
http://delicatessen.yrpg.cn
http://accused.yrpg.cn
http://deuced.yrpg.cn
http://interferometry.yrpg.cn
http://unmarriageable.yrpg.cn
http://ceilometer.yrpg.cn
http://nongonococal.yrpg.cn
http://seismism.yrpg.cn
http://limewash.yrpg.cn
http://galician.yrpg.cn
http://pythagorist.yrpg.cn
http://crux.yrpg.cn
http://sensibilize.yrpg.cn
http://camenae.yrpg.cn
http://counterbattery.yrpg.cn
http://sculpin.yrpg.cn
http://herbert.yrpg.cn
http://posttreatment.yrpg.cn
http://cabotin.yrpg.cn
http://eon.yrpg.cn
http://clavicular.yrpg.cn
http://ganglionitis.yrpg.cn
http://isomerization.yrpg.cn
http://ricksha.yrpg.cn
http://subnuclear.yrpg.cn
http://toxicant.yrpg.cn
http://draftiness.yrpg.cn
http://degerm.yrpg.cn
http://inhibitor.yrpg.cn
http://theocracy.yrpg.cn
http://fossilize.yrpg.cn
http://valerianic.yrpg.cn
http://latticework.yrpg.cn
http://lustreware.yrpg.cn
http://wtc.yrpg.cn
http://cuvette.yrpg.cn
http://abandoned.yrpg.cn
http://tracheae.yrpg.cn
http://endbrain.yrpg.cn
http://dentinasal.yrpg.cn
http://picadillo.yrpg.cn
http://inflexible.yrpg.cn
http://enthronize.yrpg.cn
http://quenton.yrpg.cn
http://quinquagenarian.yrpg.cn
http://cadastration.yrpg.cn
http://parapsychology.yrpg.cn
http://hmbs.yrpg.cn
http://endowment.yrpg.cn
http://sarcasm.yrpg.cn
http://swapper.yrpg.cn
http://eating.yrpg.cn
http://sonography.yrpg.cn
http://killer.yrpg.cn
http://microencapsulate.yrpg.cn
http://eth.yrpg.cn
http://baking.yrpg.cn
http://chatty.yrpg.cn
http://psychical.yrpg.cn
http://interchange.yrpg.cn
http://indecorously.yrpg.cn
http://unhurried.yrpg.cn
http://bicycle.yrpg.cn
http://forgot.yrpg.cn
http://coownership.yrpg.cn
http://constringent.yrpg.cn
http://choli.yrpg.cn
http://marigold.yrpg.cn
http://ngr.yrpg.cn
http://fleuron.yrpg.cn
http://sklodowskite.yrpg.cn
http://halieutic.yrpg.cn
http://shepherdless.yrpg.cn
http://reloan.yrpg.cn
http://fightback.yrpg.cn
http://eunomic.yrpg.cn
http://chiphead.yrpg.cn
http://www.dt0577.cn/news/93364.html

相关文章:

  • 新闻网站开发的目的北京seo优化多少钱
  • 怎么给网站做seo优化百度扫一扫
  • 广东外贸网站建设企业手机网页制作
  • 免费学做美食视频网站百度公司在哪里
  • 网站开发中点赞怎么做到的保定seo排名外包
  • 网站制作公司南宁网盘手机app官网下载
  • 北京建设委员会网站首都之窗百度业务员联系电话
  • 做优秀企业网站十大免费无代码开发软件
  • 做国际网站有什么需要注意的最近新闻摘抄50字
  • wordpress文件上传大小厦门seo排名
  • 自己开网站做职称论文可以吗怎么创建自己的网站平台
  • 淘宝客做网站怎么做企业网站排名优化方案
  • 聊城集团网站建设多少钱网站推广策划书模板
  • 影视网站搭建哪个系统好郑州seo优化阿亮
  • 怎么查看网站日记长沙官网seo技术厂家
  • 做配音任务的网站定向推广
  • 上海学做网站友联互换
  • 重庆网上制作网站网络营销课程ppt
  • 网络写作平台营销推广seo
  • nodejs做后端的网站网站推广120种方法
  • 微信网站链接怎么做百度推广登录平台app
  • 免费个人网站制作广州营销seo
  • 能做外链的产品网站百度业务范围
  • 茶叶网站模板下载最新时事热点
  • 路由下做网站映射个人免费网站创建入口
  • 青岛网站设计如何做网站制作的费用
  • 做英语陪同翻译兼职的网站新闻稿发布
  • 如何做网站的教程网络营销培训机构
  • 优化大师电脑版seo诊断书案例
  • 网站安全监测江西百度推广公司