代码随想录-Day29-LetCode补上之前做a

二叉树章节完成

回溯章节开始

回溯算法:

        什么是回溯?

                回溯是递归的副产品,只要有递归机会有回溯。

        回溯法的效率?

                回溯法本质就是穷尽,效率可想而知,但是既然效率如此之低,为什么还要使用它呢?因为存在问题能通过暴力求解出来就很不错了,不存在更高效的解法,只能暴力穷举。

        回溯法解决的问题?

                组合问题:N个数字里面找寻k个数字的组合。

·               切割问题:切割一个字符串的所有可能。

                子集问题:一个集合的子集。

                排列问题:N个数按照一定规则全排列.

                棋盘问题:N皇后等等。

回溯法模板;

        函数伪代码:

                1,返回值以及参数

                ·        void(int[]nums,int startindex....)

                        一般来说传递的参数都是原始数组以及判断开始的索引

                2,结束条件:

if(终止条件){
    添加结果
    return
}

              3,回溯函数遍历

                

for(选择;集合数量 ;++){
    处理节点
    backTracking(参数);
    回溯,撤销处理结果
}

完整模板

        

void backTracking(参数){
    if(参数){
        添加结果
        return
    }
    for(选择;集合中的元素;++){
        处理节点
        backTracking(参数);
        回溯,撤销处理
    }
}

明天开始书写每个题目的博客,跑了四公里有点累,睡觉

                                                                                                               By-三条直线围墙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值