摘要: 回溯法 回溯法(搜索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。这种走不通就退回再走的技术为回溯法。而满足回溯条件的某个状态的点称为“回溯点”。 回溯法问题的框架 问题的解空间 复杂问题常常有很多的 阅读全文
posted @ 2019-12-19 21:48 MarcusJr19 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 贪心算法 贪心算法是动态规划算法的一种特殊情况。它并不 从整体最优上进行考虑,所做的只是当前看来是最好的选择 。当然,我们希望贪心算法得到的最终结果也是整体最优的。 不过,贪心算法并不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须 无后效性 (不可以回溯),即某个状态以前的 阅读全文
posted @ 2019-11-23 15:51 MarcusJr19 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 程序存储问题 题目: 解析: 这道题思路非常简单,就是选取最小的那几个程序放到磁盘里面,直到放不下为止。用贪心算法的思路来说,就是每个子问题都选取当前最小的程序,最终会得到整体的最优解。 由于使用sort函数,该算法的时间复杂度为O(nlogn);由于没有开辟新空间,所以空间复杂度为O(1)。 具体 阅读全文
posted @ 2019-11-17 16:51 MarcusJr19 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 动态规划 动态规划(Dynamic Programming)在算法里面算是比较困难的。但是,其实它和分治法非常相似: 先求解子问题,然后通过子问题的解来得到原问题的解。 与分治法不同的是,动态规划的子问题往往不是独立的。在用分治法求解时,有些子问题的答案被大量的重复计算,如果我们可以把这些子问题的答 阅读全文
posted @ 2019-11-03 20:48 MarcusJr19 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 实践题目: 问题描述: 该问题目标是求出最大子段和,比如说样例中,最大子段和就为11+( 4)+13=20。 注意:最大子段和必须是连续的!不是最大子串和! 算法描述: 该题使用动态规划算法。 递归方程为: (不会打数学公式,此图来源于网上): 代码如下: include include using 阅读全文
posted @ 2019-10-20 22:47 MarcusJr19 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 分治策略(Divide and Conquer) 1. 将原始问题划分或者归结为规模较小的子问题 2. 递归或者迭代求解每个子问题 3. 将子问题的解综合得到原问题的解 注意: 1. 子问题和原始问题性质完全一样 2. 子问题之间可以彼此独立的求解 3. 递归停止时子问题可以直接求解 分治算法设计模 阅读全文
posted @ 2019-10-12 14:29 MarcusJr19 阅读(434) 评论(0) 推荐(1) 编辑
摘要: 二分查找 题目: 代码如下: include using namespace std; int searchMid(int a[],int b[],int n) { int low1 = 0, low2 = 0, high1 = n 1, high2 = n 1; while (low1 n; fo 阅读全文
posted @ 2019-09-21 17:16 MarcusJr19 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 1. 请上网了解编码规范,说明你本学期的编码遵循哪个规范及该规范的链接。 本学期的编码会遵循该博客内的C++规范: https://www.cnblogs.com/linuxAndMcu/p/11303688.html 遵循编码规范在开发中是十分重要的,尤其是多人开发的时候。如果两个人使用不同的代码 阅读全文
posted @ 2019-08-31 19:55 MarcusJr19 阅读(148) 评论(1) 推荐(0) 编辑