挑战30天C++基本入门(DAY13--搜索与回溯)

#我们在DFS的搜索学习中涉及到了回溯的操作,那什么是回溯呢?

就是说我们在标记数组之后,我们进行解标记的操作,同时再次进入递归,出现新的情况的操作,这就叫做回溯操作。

如果现在有这样一道题:abc,如何输出他的全部排列方式,这时候我们就可以用回溯操作来解决这样的问题;

回溯与搜索:

分为以下几个步骤:

1.枚举方案数

2.标记-防止重复搜索

3.搜索当前层

4.进入下一层去搜索下个方案

5.回溯(解标记)

6.终止条件

第一步中有:枚举方案数

void dfs(int dep)
{//1.枚举方案数 for(int i=0;i<s.size();i++){

第二步:标记-防止重复搜索

if(!vis[i]) {vis[i]=1;

第三步:搜索当前层

//3.搜索当前层 ans[dep]=s[i];

第四步:进入下一层去搜索下个方案

//4.进入下一层去搜索下个方案dfs(dep+1); 

第五步:回溯(解标记)

	//5.回溯vis[i]=0;

第六步:终止条件

	//6.终止条件if(dep==s.size()+1){//前面s.size()已经搜索完了//搜多少打印多少 for(int i=1;i<dep;i++) cout<<ans[i];cout<<endl;return;} 

综合起来我们的回溯操作模板就是这样的:

#include<bits/stdc++.h>
using namespace std;
bool vis[101];
char ans[101];
string s;
void dfs(int dep)
{//1.枚举方案数 for(int i=0;i<s.size();i++){//6.终止条件if(dep==s.size()+1){//前面s.size()已经搜索完了//搜多少打印多少 for(int i=1;i<dep;i++) cout<<ans[i];cout<<endl;return;} //2.标记-防止重复搜索  if(!vis[i]) {vis[i]=1;//3.搜索当前层 ans[dep]=s[i];//4.进入下一层去搜索下个方案dfs(dep+1); //5.回溯vis[i]=0;}}} int main(){cin>>s;dfs(1);return 0;} 

//谢谢大家的支持啦~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024【华南理工大学综合评价招生】解读

文章目录 导语报名条件及类别符合以下两个条件的考生均可申请报名申请报名考生分为以下两类 招生专业及选考科目报名方式与选拔程序报名时间和方式网上提交材料材料初审缴费学校考核录取 学费监督机制与其他说明联系方式 导语 2024 , 04 , 03 2024,04,03 2024,04,03&#xff0c…

C++类设计:一个比较复杂的日志类 支持多线程、文件切换、信息缓存(源码)

初级代码游戏的专栏介绍与文章目录-CSDN博客 github位置&#xff1a;codetoys/ctfc.git src/env/myLog.h和.cpp 这个类功能细节比较多&#xff0c;因为是长期使用的版本&#xff0c;累积了各种功能。之前介绍的两个是我的测试代码用的版本&#xff0c;非常简单&#xff0c;那…

AI技术将影响更长远,比如未来的就业形势

随着人工智能渗透到工作场所&#xff0c;人类将需要掌握新的工作技能。 AI作为新技术已经开始扰乱就业市场了。对于最新的AI人工智能技术&#xff0c;经济学家、教育工作者、监管机构、商业分析师以及相关领域专家预测&#xff0c;在不久的将来&#xff0c;人工智能一代将需要…

AI智能调色解决方案,节省了企业的时间和人力成本

如何确保图片、视频的色彩准确、生动&#xff0c;成为企业提升品牌形象和传播效果的重要课题。美摄科技凭借领先的AI技术&#xff0c;推出全新的AI智能调色解决方案&#xff0c;以智能化、精细化的调色方式&#xff0c;帮助企业轻松驾驭色彩&#xff0c;展现视觉魅力。 美摄科…

vue改变子组件props属性值

1.使用v-model和$emit <!-- 父组件 --> <template><ChildComponent v-model="propValue" /> </template><script setup> import { ref } from vue; import ChildComponent from ./ChildComponent.vue;const propValue = ref(initial …

2.小明的背包1

2.小明的背包1 - 蓝桥云课 (lanqiao.cn) 小明的背包1 题目描述 小明有一个容量为V的背包。 这天他去商场购物&#xff0c;商场一共有件物品&#xff0c;第件物品的体积为wi&#xff0c;价值为 vi。 小明想知道在购买的物品总体积不超过V的情况下所能获得的最大价值为多少&#…

CSDN 广告太多,停更通知,转移到博客园

文章目录 前言新博客地址 前言 CSDN的广告实在是太多了&#xff0c;我是真的有点忍不了。直接把广告插在我的文章中间。而且我已经懒得找工作了&#xff0c;我当初写CSDN的目的就是为了找工作&#xff0c;有个博客排名。当时经济环境实在是太差了。我也没必要纠结这个2000粉丝…

C++逻辑运算符

假设变量 A 的值为 1&#xff0c;变量 B 的值为 0 则&#xff1a; 运算符描述实例&&称为逻辑与运算符。如果两个操作数都非零&#xff0c;则条件为真。(A && B) 为假。||称为逻辑或运算符。如果两个操作数中有任意一个非零&#xff0c;则条件为真。(A || B) …

Facebook直播延迟过高是为什么?

在进行Facebook直播 时&#xff0c;高延迟可能会成为一个显著的问题&#xff0c;影响观众的观看体验和互动效果。以下是一些导致Facebook直播延迟过高的可能原因&#xff1a; 1、网络连接问题 网络连接不稳定或带宽不足可能是导致Facebook直播延迟的主要原因之一。如果您的网络…

EDM邮件群发推广多少钱?有哪些优势?

电子邮件营销&#xff08;Electronic Direct Mail, EDM&#xff09;以其高性价比、精准定向与可度量效果的优势&#xff0c;成为众多企业不可或缺的营销策略。云衔科技&#xff0c;作为企业数字广告营销和SaaS软件服务的领军者&#xff0c;以其创新的智能EDM邮件营销系统解决方…

数学基础:常见函数图像

来自&#xff1a; https://www.desmos.com/calculator/l3u8133jwj?langzh-CN 推荐: https://www.shuxuele.com/index.html 一、三角函数 1.1 正弦 sin(x) 1.2 余弦 cos(x) 1.3 正切 tan(x) 1.4 余切 cot(x) 1.5 正弦余弦综合 1.6 正切余切综合 二、指数对数

【THM】Metasploit: Exploitation(利用)-初级渗透测试

介绍 在这个房间里,我们将学习如何使用Metasploit进行漏洞扫描和利用。我们还将介绍数据库功能如何使管理更广泛范围的渗透测试活动变得更容易。最后,我们将研究使用msfvenom生成有效负载以及如何在大多数目标平台上启动Meterpreter会话。 更具体地说,我们将讨论的主题是:…

前端:自制年历

详细思路可以看我的另一篇文章《前端&#xff1a;自制月历》&#xff0c;基本思路一致&#xff0c;只是元素布局略有差异 ①获取起始位startnew Date(moment().format(yyyy-01-01)).getDay() ②获取总的格子数numMath.ceil(365/7)*7,这里用365或者366计算结果都是一样的371 …

SSD 可靠性深度分析

固态硬盘&#xff08;SSD&#xff09;因其相对于传统硬盘驱动器&#xff08;HDD&#xff09;的诸多优势而日益受到青睐&#xff0c;包括更快的速度、更小的体积、更高的能效以及由于没有活动部件而增强的耐用性。此外&#xff0c;SSD 现在提供更大的存储容量&#xff0c;且价格…

Kali Linux介绍

Kali Linux是一个基于Debian的Linux发行版&#xff0c;主要用于数字取证和渗透测试。它是由Offensive Security维护和资助的&#xff0c;每季度更新一次。Kali Linux最初是由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成的&#xff0c;而BackTrack也…

蓝桥杯刷题-16-买瓜-DFS+剪枝优化⭐⭐

蓝桥杯2023年第十四届省赛真题-买瓜 该如何剪枝呢&#xff1f;⭐⭐ 如果当前方案的切的刀数&#xff0c;已经大于等于了之前已知合法方案的最优解&#xff0c;那么就没必要 往后搜了。如果后面的瓜的总和加起来&#xff0c;再加上当前已有的重量&#xff0c;都不到m,那么也没…

js语法---简单理解promise

promise语法结构 创建一个promise对象 let p new Promise(function(resolve,reject){// 执行的操作...// 判断操作的结果并执行对应的回调函数if(){resolve()}else{reject()} } 以上实例化了一个promise对象&#xff0c;其中包含了一个参数function&#xff0c;这个函数会在…

MyBatis 应用的组成

王有志&#xff0c;一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群&#xff1a;共同富裕的Java人 大家好&#xff0c;我是王有志。在上一篇文章的最后&#xff0c;我们写了一个简单的例子&#xff0c;今天我们就通过这个例子来看一看一个标准的 MyBatis 应用程序由哪…

css 响应式布局重学笔记

1、常用的布局 1、固定布局。以px为基本单位&#xff0c;不考虑设备的屏幕和尺寸。 2、可切换的固定布局。同样以px作为单位&#xff0c;参考主流设备尺寸&#xff0c;设计几套不同宽度的布局。如移动端一套html代码&#xff0c;PC端一套html代码&#xff0c;程序区分对应的设备…

C#实现HTTP上传文件的方法

/// <summary> /// Http上传文件 /// </summary> public static string HttpUploadFile(string url, string path) {// 设置参数HttpWebRequest request WebRequest.Create(url) as HttpWebRequest;CookieContainer cookieContainer new CookieContainer();reque…