C++回溯
创始人
2024-12-03 01:04:05
0

我对回溯的定义是不定层循环,此定义并不规范,但容易理解。回溯基本上用深度优先搜索实现,暂未发现反例。而深度优先搜索绝大部分是用递归实现。

输出两位以内的数

注意:1位数,也要输出,前面补0。代码很简单,两层循环:分别枚举十位数和个位数。

int main() {     for (int i = 0; i < 10; i++) {         for (int j = 0; j < 10; j++) {             std::cout << i << j << " ";         }     } } 

输出 n位以内的3进制数

低于n位的数,也要输出。不足n位的,前面补0到n位。

#include  #include  #include  using namespace std; int main() {     int n = 0;     std::cout << "请输入n\r\n";     std::cin >> n;     vector path;     std::function BackTrack = [&]() {         if (path.size() == n) {             for (auto& tmp : path) {                 std::cout << tmp;             }             std::cout << " ";             return;         }         for (int i = 0; i < 3; i++) {             path.emplace_back(i);             BackTrack();             path.pop_back();         }     };     BackTrack(); } 

本题扩展:
一,输出m进制。
二,0,00,000分别输出。如:n=2 m=2,包括{0,1,00,01,10,11}

回溯总结

五点:
一,路径(状态),已经做出的选择。恢复状态主要针对它。
二,结束条件。
三,需要处理的路径。
四,子回溯,从选择列表中做出选择。
五,初始调用。
有些场景,在”结束条件“之前,还需要剪枝,去掉非法和被淘汰的分支。

在这里插入图片描述
时间复杂度:O(选择列表的长度层次) ,由于有大量剪枝,实际复杂度少得多。

教科书定义

回溯算法,又称为“试探法”。解决问题时,每进行一步,都是抱着试试看的态度,如果发现当前选择并不是最好的,或者这么走下去肯定达不到目标,立刻做回退操作重新选择。这种走不通就回退再走的方法就是回溯算法。
解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:
1、路径:也就是已经做出的选择。
2、选择列表:也就是你当前可以做的选择。
3、结束条件:也就是到达决策树底层,无法再做选择的条件。

题解

回溯状态只需要知道路径层次难度分
【回溯 状态压缩 枚举】2151. 基于陈述统计最多好人数1797
【回溯】1255. 得分最高的单词集合1881
【状态压缩 枚举 回溯】1601. 最多可达成的换楼请求数目2118
【回溯 栈 代数系统 动态规划】282. 给表达式添加运算符
回溯状态需要栈难度分
【图论 回溯 广度优先搜索】126. 单词接龙 II
【回溯 图论】2065. 最大化一张图中的路径价值2178
难度分
【回溯 深度优先搜索】980. 不同路径 III1830
【回溯】1240. 铺瓷砖2241
【性能优化】 【回溯】 【字符串】1307. 口算难题2250
【回溯 字典树(前缀树)】212. 单词搜索 II
【回溯 代数系统】679. 24 点游戏
LeetCode37. 解数独
【回溯 网格 状态压缩】52. N 皇后 II

LeetCode暂无题解

140 301 691 996

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771

如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

相关下载

想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653

我想对大家说的话
《喜缺全书算法册》以原理、正确性证明、总结为主。
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

相关内容

热门资讯

透视挂(wpk透视是真的吗)一... 透视挂(wpk透视是真的吗)一直是真的有挂(透视)私人辅助(切实教程)一、wpk透视是真的吗AI软件...
透视ai代打(wepoker)... 透视ai代打(wepoker)wepoker亲友圈有用吗(透视)竟然真的有挂(黑科技教程)1、下载好...
透视挂透视!德扑圈有透视吗(透... 透视挂透视!德扑圈有透视吗(透视)辅助器(有挂黑科技);1、操作简单,无需注册,只需要使用手机进行登...
透视总结“德州透视脚本”拱趴游... 透视总结“德州透视脚本”拱趴游戏破解器(透视)详细教程(竟然存在有挂)1、完成拱趴游戏破解器透视辅助...
透视安装“wepoker怎么买... 透视安装“wepoker怎么买辅助”wepoker私人局规律(透视)透视有(切实存在有挂)1、进入到...
透视规律(WePoKer)we... 透视规律(WePoKer)wepoker游戏下载(透视)总是真的有挂(微扑克教程);一、wepoke...
透视私人局(购买的wpk辅助在... 透视私人局(购买的wpk辅助在哪里下载)其实真的有挂(透视)模拟器多开(靠谱教程)1、下载好购买的w...
透视透视“uupoker透视”... 透视透视“uupoker透视”xpoker透视辅助(透视)可靠教程(本来是有挂);1、玩家可以在xp...
透视辅助!德普辅助器辅助器怎么... 透视辅助!德普辅助器辅助器怎么用(透视)透视免费(有挂解说)在进入德普辅助器辅助器怎么用辅助挂后,参...
透视计算“wepoker究竟有... 透视计算“wepoker究竟有没有透视”wepoker怎么提高运气(透视)软件(都是是有挂)1、超多...