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++**实现。

相关内容

热门资讯

透视辅助挂!hhpoker德州... 透视辅助挂!hhpoker德州机器人(透视)开挂辅助器(一直真的有挂)-哔哩哔哩1、完成hhpoke...
透视了解!hhpoker辅助器... 透视了解!hhpoker辅助器,wepoker辅助器是真的吗,窍要教程(一直是真的挂)-哔哩哔哩we...
现就发布提示!约战竞技场辅助脚... 现就发布提示!约战竞技场辅助脚本,永胜联盟金花辅助,力荐教程(切实是真的挂)-哔哩哔哩1、进入游戏-...
透视小程序!aapoker透视... 透视小程序!aapoker透视脚本入口(透视)开挂辅助app(果然是真的挂)-哔哩哔哩1、进入到aa...
透视好牌!hhpkoer辅助器... 透视好牌!hhpkoer辅助器,wepokerplus辅助,策略教程(总是真的是有挂)-哔哩哔哩1、...
备受关注的!微友联盟辅助下载,... 备受关注的!微友联盟辅助下载,心悦辅助出售平台,攻略教程(其实是真的挂)-哔哩哔哩1、心悦辅助出售平...
透视科技!wepoker透视脚... 透视科技!wepoker透视脚本,wepoker插件功能辅助器,窍要教程(真是真的有挂)-哔哩哔哩w...
透视测试!aapoker能控制... 透视测试!aapoker能控制牌吗(透视)开挂辅助脚本(竟然有挂)-哔哩哔哩一、aapoker能控制...
最新消息!顺欣茶楼怎么开挂,神... 最新消息!顺欣茶楼怎么开挂,神途游戏辅助软件,AA德州教程(一贯是真的挂)-哔哩哔哩运神途游戏辅助软...
透视计算!werplan辅助软... 透视计算!werplan辅助软件,wepoker辅助工具,练习教程(果然真的有挂)-哔哩哔哩所有人都...