当前位置:首页 » 操作系统 » 算法模板题

算法模板题

发布时间: 2024-09-05 22:19:28

Ⅰ 回溯算法与贪心算法

回溯是递归的副产品,只要有递归就会有回溯 ,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都是用了递归。

回溯法就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。

回溯算法能解决如下问题:

组合问题:N个数里面按一定规则找出k个数的集合

排列问题:N个数按一定规则全排列,有几种排列方式

切割问题:一个字符串按一定规则有几种切割方式

子集问题:一个N个数的集合里有多少符合条件的子集

棋盘问题:N皇后,解数独等等

回溯算法的本质是纵向遍历

回溯算法模板为

贪心的本质是选择每一阶段的局部最优,从而达到全局最优

贪心算法一般分为如下四步:

将问题分解为若干个子问题

找出适合的贪心策略

求解每一个子问题的最优解

将局部最优解堆叠成全局最优解

eg:摆动序列

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。

例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。

给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序。

示例 2:

输入: [1,17,5,10,13,15,10,5,16,8]

输出: 7

解释: 这个序列包含几个长度为 7 摆动序列,其中一个可为[1,17,10,13,10,16,8]。

热点内容
java汉诺塔递归算法 发布:2025-04-02 06:28:40 浏览:126
可执行文件是编译链接后生成的文 发布:2025-04-02 04:36:44 浏览:174
电脑文件加密软件免费 发布:2025-04-02 03:02:51 浏览:806
php图片管理 发布:2025-04-02 03:01:11 浏览:266
然后弄编程 发布:2025-04-02 02:54:06 浏览:114
解压室俱乐部 发布:2025-04-02 02:47:04 浏览:282
安卓哪里下载文豪野犬 发布:2025-04-02 02:45:04 浏览:791
优酷安卓怎么免广告 发布:2025-04-02 02:30:07 浏览:834
安卓系统怎么把繁体字改为简体字 发布:2025-04-02 02:14:39 浏览:326
androidpos机 发布:2025-04-02 01:40:54 浏览:374