基本算法总结
梦因you而美
因为坚守,所以花开不败!
展开
-
DFS深度优先搜索算法
例题一:题目来源:POJ-3620:Avoid The Lakes题目大意: 题目分析:AC代码: 例题二:题目来源:ZOJ-2100:Seeding题目大意:题目分析:AC代码: 例题三:题目来源:POJ-1342:Lotto题目大意:题目分析:AC代码: 例题四:题目来源:POJ-1181:变形课题目大意:题目原创 2015-08-25 21:42:59 · 2866 阅读 · 0 评论 -
【算法入门】深度优先搜索(DFS)
【算法入门】深度优先搜索(DFS)转载 2016-03-05 11:33:03 · 1000 阅读 · 0 评论 -
并查集算法
并查集是一种树型的数据结构,用于处理一些不相交集合的合并问题。并查集的主要操作有1-合并两个不相交集合2-判断两个元素是否属于同一个集合3-路径压缩 并查集的精髓1、Make_Set(x) 把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(也可以根据情况而变)。2、Find_Set(x) 查找一个元素所在的集合原创 2016-02-13 16:56:04 · 1003 阅读 · 0 评论 -
最小生成树-Prim算法和Kruskal算法
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。2.算法简单描述1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空;3).原创 2016-02-25 15:50:39 · 1392 阅读 · 0 评论 -
STL栈与队列的操作
栈定义:栈是限定只能在表的一端进行插入和删除的线性表。在表中允许插入和删除的一端叫做栈顶(top);表的另一端则叫做栈底(bottom)。栈又称后进先出(Last In First Out,简写为LIFO)表。•栈满:栈内元素个数为MaxSize时。top=MaxSize-1•栈空:栈内无元素。top=-1•上溢:当栈满时,还要进栈。•下溢:当栈空时,还要出栈。 队列定义:原创 2016-02-26 13:31:07 · 3135 阅读 · 2 评论 -
贪心算法知识点补充
一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。所以对所采用的贪心策略一原创 2016-02-25 23:24:06 · 1207 阅读 · 0 评论 -
背包问题
01背包: 有N件物品和一个重量为M的背包,每种物品均只有一件。第i件物品的重量是w[i],价值是p[i]。求解将哪些物品装入背包可使价值总和最大。完全背包: 有N种物品和一个重量为M的背包,每种物品都有无限件可用。第i种物品的重量是w[i],价值是p[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大。多重背包: 有N种物品和一个重量为M的背包。第i种物品最原创 2016-01-27 00:38:01 · 4332 阅读 · 0 评论 -
背包问题
01背包:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。从这个题目中可以看出,01背包的特点就是:每种物品仅有一件,可以选择放或不放。其状态转移方程是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}对于这方方程其实并不难理解,方程之中,现在需要放置的是第i件物品,这件物品原创 2016-01-25 23:36:28 · 854 阅读 · 0 评论 -
贪心算法
例题一:题目来源:HDOJ-2187:悼念512汶川大地震遇难同胞——老人是真饿了题目大意:如果市场有m种大米,各种大米的单价和重量已知,为了满足更多灾民的需求,问最多能采购多少重量的大米。 题目分析:对价格的进行排序,用最少的钱买更多的大米。AC代码: #include #include #include using namespace std;struct pric原创 2015-08-24 11:04:12 · 1293 阅读 · 0 评论 -
递归
例题一:题目来源:HDOJ-2041:超级楼梯题目大意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?题目分析:倒着思考,当到达M级时有两种可能:一种是从M-1级走到M级,一种是从M-2级走到M级,两种可能加起来就是到达M级的总共走法;同理,当到达M-1级时有两种可能:一种是从M-2级走到M-1级,一种是从M-3级走到M-1级,两种可能加起原创 2015-08-24 17:13:47 · 1493 阅读 · 0 评论 -
二分查找
二分查找:例题一:题目来源:HDOJ-2199:Can you solve this equation?题目大意:给出一个方程8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,再给出一个Y,求出0~100之间的解。题目分析:最基础的二分查找问题。AC代码:#include #include double f(double x){原创 2015-08-24 09:17:00 · 1193 阅读 · 0 评论 -
十大经典排序算法总结
排序算法说明(1)排序的定义:对一序列对象根据某个关键字进行排序;输入:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a2',a3',...,an',使得a1'<=a2'<=a3'<=...<=an'。再讲的形象点就是排排坐,调座位,高的站在后面,矮的站在前面咯。(2)对于评述算法优劣术语的说明稳定:如果a原本在b前面,而a=b,排...原创 2019-02-05 01:31:32 · 2010 阅读 · 1 评论