(自用)fds 回溯算法

回溯算法

1.组合 回溯三部曲(1.确定参数,2.确定终止条件同时对答案做处理,3.for中处理已经在递归后回溯
2.组合(优化) 在for中i的最大值可以修减
3.组合总和3  和上面的这个内容一样,只是加了一个sum来不断计算当前path总和。
4.电话号码组合  (这里的流程就是把之前的不断减少可选数字变成从不同数对应的字母中依次选取)

-----------------------------------------------
5.组合总和 还是回溯模板,只不过这里因为可以重复数字,所以不是i+1,而是i
6.组合总和2 回溯模板,但是这里不同的是可选择数出现重复,首先排序,然后在每一层的也就是for中需要判断选的数是否已经选过
7.分割回文串 index作为上一次的切割点,横向是不断把切割点往后移,如果这一段是回文那就放入path并接着切割,如果不是就把切割点后移。纵向是在前一次的切割点之后接着切割(这里用到了substr函数)
8.复原ip地址(难)(这里不是重新用path去记录而是直接在原string上加分隔符)
9.子集问题 简单,这里path加入到ans不是在每次终结的时候,然后每次path加入节点时就放到ans中
---------------------------------------------------------
10.子集2   和之前的组合2一样,不能出现重复,那么就先排序,然后在每一层中判断i是否和i-1一样,一样就跳过
11.递增子序列 这里用了order_set来记录本次已经使用的数字。不再和前面需要重排的时候,看i和i-1是否相等。这里使用了orderset的insert和find
12. 全排列  这里用了vector<bool>used 来记录哪些数被用了,true就跳过,在pop时把true改成false
13.全排列2  这题中同时出现了 不可重复(使用i不等于i-1)和used记录被使用的数
-------------------------------------------------------------------
14.n皇后 确实难,但是也是回溯模板 (-------需要再多写几遍------)
15.解数独
 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值