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

中国建设银行支付网站芜湖市建设工程质监站网站

中国建设银行支付网站,芜湖市建设工程质监站网站,大连广告设计与制作公司,网页编辑软件哪个好1.回溯的定义(ai) 回溯(Backtracking) 是一种通过搜索所有可能的解空间来求解问题的算法思想,属于试探性求解方法。其核心是在搜索过程中逐步构建解,并在发现当前路径无法得到有效解时,主动回退…

1.回溯的定义(ai)

回溯(Backtracking) 是一种通过搜索所有可能的解空间来求解问题的算法思想,属于试探性求解方法。其核心是在搜索过程中逐步构建解,并在发现当前路径无法得到有效解时,主动回退(回溯)到上一个可行状态,尝试其他路径,避免无效搜索。

回溯的基本概念

  1. 解空间
    问题所有可能解的集合,通常以树形结构(如子集树、排列树)表示,每个节点代表一个部分解。

  2. 约束条件
    用于判断当前部分解是否有潜力成为有效解的规则。若不满足约束条件,则跳过该分支(剪枝)。

  3. 状态树遍历
    通过深度优先搜索(DFS)遍历状态树,从根节点出发,逐步扩展路径。若当前路径无法继续(达到叶节点或被剪枝),则回溯到上一层节点,尝试其他分支。

回溯的适用场景

回溯算法适用于有明确解空间且需要枚举所有可能解的问题,常见场景包括:

  • 组合问题:如子集生成、组合数选取(例:从 n 个元素中选 k 个的所有组合)。
  • 排列问题:如全排列、有重复元素的排列。
  • 棋盘问题:如八皇后问题、数独求解。
  • 路径搜索问题:如迷宫寻路、图的哈密顿路径。
  • 约束满足问题:如符号方程求解、字符串匹配。

回溯的执行流程

  1. 初始化:从空解或初始状态开始,构建解的起始节点。
  2. 深度优先扩展:递归或迭代地向当前解中添加新元素,生成子节点。
  3. 约束检查:判断当前子节点是否满足所有约束条件:
    • 若满足,继续递归搜索该子节点的子节点。
    • 若不满足或已达叶节点(完整解),则回溯到父节点,尝试其他未探索的分支。
  4. 记录有效解:当找到完整且满足条件的解时,将其加入结果集。

回溯与剪枝

  • 剪枝(Pruning):在搜索过程中,通过约束条件提前排除无效分支,减少计算量。例如:
    • 在子集和问题中,若当前子集的和已超过目标值,可直接跳过该分支。
    • 在排列问题中,通过标记已使用的元素避免重复计算。
  • 剪枝的关键:设计高效的约束条件,尽可能早地排除无效路径,提升算法效率

2.模板(代码随想录)

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}
void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}作者:代码随想录
链接:https://leetcode.cn/problems/combinations/solutions/857507/dai-ma-sui-xiang-lu-dai-ni-xue-tou-hui-s-0uql/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第一步: 定义收集结果的集合

             定义每个集合内的结果

第二步:定义起始值(防止出现重复集合)

第三步:寻找终止条件

题解:

class Solution {List<List<Integer> > res  =  new ArrayList<>();List<Integer> path  = new LinkedList<>();public List<List<Integer>> combine(int n, int k) {if (k <= 0 || n < k) return res; // 处理边界条件combineHelper(n, k, 1); // 从1开始选择return res;}private void combineHelper(int n, int k, int startIndex) {if (path.size() == k) {res.add(new ArrayList<>(path)); // 深拷贝当前路径return;}int size = path.size();for (int i = startIndex; i <= n - (k - size) + 1; i++) {path.add(i);combineHelper(n, k, i + 1);path.remove(path.size() - 1); // 修正:删除最后一个元素}}
}

从 i 到 n 的元素个数为 n - i + 1

i = k-size

未剪枝优化

class Solution {private List<List<Integer>> ans = new ArrayList<>();private List<Integer> path = new ArrayList<>();private int target;public List<List<Integer>> combine(int n, int k) {this.target = n;dfs(1,k);return ans;}public void dfs(int startx,int k ){if(k == 0){ans.add(new ArrayList<>(path));return ;}for(int i = startx;i<=target;i++){path.add(i);dfs(i+1,k-1);path.remove(path.size()-1);}}
}

class Solution {List<List<Integer>> result= new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> combine(int n, int k) {backtracking(n,k,1);return result;}public void backtracking(int n,int k,int startIndex){if (path.size() == k){result.add(new ArrayList<>(path));return;}for (int i =startIndex;i<=n;i++){path.add(i);backtracking(n,k,i+1);path.removeLast();}}
}


文章转载自:

http://7YlZj0ZM.LLyjx.cn
http://mku9G3XA.LLyjx.cn
http://d0ib7x0D.LLyjx.cn
http://p2PgrOWE.LLyjx.cn
http://re3aMvay.LLyjx.cn
http://9UNkKfLP.LLyjx.cn
http://ODkKvx83.LLyjx.cn
http://QEW9UJ0M.LLyjx.cn
http://8b4xeKEM.LLyjx.cn
http://QhGxGsLE.LLyjx.cn
http://dgC0TaZG.LLyjx.cn
http://qqcw7IIP.LLyjx.cn
http://svQLJH7z.LLyjx.cn
http://4ubKxxaU.LLyjx.cn
http://ygSNzS8i.LLyjx.cn
http://udLigLT5.LLyjx.cn
http://MuIj21Qm.LLyjx.cn
http://metWHPgn.LLyjx.cn
http://o0ulDkM3.LLyjx.cn
http://6mtCumq7.LLyjx.cn
http://0MfStXIC.LLyjx.cn
http://k98239fC.LLyjx.cn
http://aoxhneJi.LLyjx.cn
http://lS49XPP1.LLyjx.cn
http://5SIyEWZG.LLyjx.cn
http://SC66w4dL.LLyjx.cn
http://3J8J8qQP.LLyjx.cn
http://3Eo7n1xB.LLyjx.cn
http://1eSFnaEl.LLyjx.cn
http://UvQRjkRB.LLyjx.cn
http://www.dtcms.com/wzjs/666965.html

相关文章:

  • 网站建设店淘宝做网站能用本地的数据库嘛
  • 知名做网站价格杭州百度开户
  • 专用车网站建设价格是阿里巴巴好还是自己做网站好?
  • 网站 服务器 域名四川高速公路建设开发集团有限公司网站
  • 凡客诚品网站特点编辑网页的工具有
  • 有什么可以做兼职的网站电子商务型网站建设
  • 网站链接怎么做参考文献wordpress动态导航
  • 茶陵网站建设深圳公关公司首荐乐云seo
  • 科技公司网站系统直播app开发公司排名
  • 嘉兴市做外贸网站的介休市网站建设公司
  • 网站前置审批查询网站企业案例
  • 神华科技 网站建设seo店铺描述例子
  • 侠客推 网站建设网页制作怎么插视频
  • 宝塔网站做301重定向广告设计专业的单招学校
  • 网站分为哪几种互联网电商公司排名
  • 集团公司网站开发移动网站转换
  • 广州建网站加备案深圳移动网站建设公司价格
  • 用dw制作影视网站怎样做微信公众号商城制作
  • 上海做网站公司排名地推项目发布平台
  • 萝岗企业网站建设亳州市网站建设公司
  • flash 做ppt的模板下载网站有哪些虚拟主机 发布网站
  • 健康管理公司网站建设wordpress还是hexo
  • 无锡网络推广seo系统培训哪家好
  • 深圳微商城网站设计专门为网站建设服务的公司
  • 如何访问win7下做的网站威海百姓网免费发布信息网
  • 瑞安建设公司网站模板app
  • 手机网站设计制作公司wordpress花瓣网
  • 网站专业是学什么制作企业网页的公司
  • 企业网站管理规定招标网免费查看
  • ps做网站 大小网站建设的前期投入