合集-算法基础
摘要:一、数论问题模板 1. 欧几里得算法 求两个正整数的最大公约数,时间复杂度 O(logn)。 int gcd(int a, int b) { return b ? gcd(b, a % b) : a; } 2. 线性筛素数 可以在 O(n)的时间复杂度内求出 1∼n之间的所有质数。 int prim
阅读全文
摘要:符串题目在很多比赛中都是必考的一类题目,而其中的题目好多都涉及到字符串的增删改查,如果使用字符数组来存储时,大部分的时间都浪费在了写循环上面,而c++中的string库包含了我们所要用到的大部分操作,几个for循环往往只用一个库函数就可以解决。 如定义一个string类型的变量a,既可以之间使用ci
阅读全文
摘要:
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。 vector封装数组,list封装了链表,map和set封装了二叉树等 一、vector vector是一种「变长数组」,即“自动
阅读全文
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。 vector封装数组,list封装了链表,map和set封装了二叉树等 一、vector vector是一种「变长数组」,即“自动
阅读全文
摘要:C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。 在之前已经介绍关于vector,set,string,map的用法与函数,接下来将再讲剩下的几个类。 一、stack 栈是最基本的
阅读全文
摘要:*问题描述*: 从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。 测试用例 从5,3,7,1,8,2,9,4,7,2,6,6这n=12个数中,找出最大的k=5个。 一、直接排序 将n个数排序之后,取出最大的k个 *伪代码*: sort(arr, 1, n); return
阅读全文
摘要:分治算法中存在的问题: 可以分解 规模减小到一定程度方便求解 可以合并:子问题解可合并 子问题间不重叠 由此引入动态规划算法。 一、动态规划算法概述 动态规划基本思想:将待求解的问题分解成若干个子问题 子问题往往不是相互独立的,不同子问题的数目只有多项式量级 在用分治法求解时,有些子问题被重复计算了
阅读全文
摘要:动态规划-背包问题 包含: 01背包求解及优化方法--跳跃点. 多重与完全背包的二进制优化和优先队列优化. 1.动态规划算法设计与实现 1.1.注意 • 问题的状态表示对能否用动态规划进行求解是至关重要的, 不恰当的状态表示将使问题的描述不具有最优子结构性质, 从而无法建立最优值的递归关系,动态规划
阅读全文

使用BFPTR算法实现快速排序的子问题平衡
浙公网安备 33010602011771号