
算法(C++)
19951211丶
这个作者很懒,什么都没留下…
展开
-
排序算法之拓扑排序
时间:2016/5/7(day7)目标算法:排序排序应用范围:排序算法思路:记录每个结点的度,然后从度为0的结点开始,将结点加入输出数组,并删除与此结点相邻结点之间边且相邻接点的度减一,重复此过程直到排序结束算法实现:设置三个数组,分别为边数组,度数组,输出数组,用边数组输入,用度数组记录每个结点的度,然后在while循环内实现寻找度为0结点,以及删除边,相邻节点度减一等操作,直到原创 2016-05-16 13:27:42 · 359 阅读 · 0 评论 -
排序算法之归并排序
目标算法:快速排序应用范围:排序算法代码:#include#include#include#include#includeusing namespace std;const int Maxn = 5005;int a[Maxn];int c[Maxn];int n;void Merge(int l,int m,int r){ int i =原创 2016-08-29 19:33:35 · 423 阅读 · 0 评论 -
字符串算法之KMP算法
时间:2016/5/8(day8)目标算法:KMP应用范围:字符串匹配算法思路:匹配时原串不动,只改变模式串,利用next数组是模式串移动到合适位置,快速计算next[I]的方法是看next[I]之前字符串的前缀字符串和后缀字符串的最大相同字符个数,加一即是next[I]。算法实现:利用指针传递数组,模拟即可时间复杂度:O(n)oj测试:poj 3461测试结果:AC原创 2016-05-17 21:06:22 · 343 阅读 · 0 评论 -
字符串算法之字典树
目标算法:字典树应用:统计拥有相同前缀的字符串#include#include#include#includeusing namespace std;const int maxn = 26;typedef struct Trie{ int v; //v可以表示一个字典树到此有多少相同前缀的数目,这里根据需要应当学会自由变化。 Trie* next[maxn]原创 2016-05-31 17:55:03 · 390 阅读 · 0 评论 -
RMQ算法之Sparse Table算法
目标算法:Sparse Table算法应用范围:RMQ#include#include#include#includeusing namespace std;const int maxn = 50005;int dpmax[maxn][20];int dpmin[maxn][20];int a[maxn];int n,m;void InitRmq(){原创 2016-08-03 11:23:57 · 486 阅读 · 0 评论 -
TSP问题(状压DP+Floyd解决方式)
目标算法:状态压缩DP+Floyd应用范围:TSP#include#include#includeusing namespace std;int map[12][12];int dp[1<<11][12];int n,ans,Min;const int Inf = 0x3f3f3f;int main(){ while(~scanf("%d",&n) &原创 2016-08-03 14:31:52 · 2278 阅读 · 0 评论 -
判断欧拉路径(非并查集写法)
目标算法:欧拉路径算法应用范围:判断是否存在欧拉路径#include#include#includeusing namespace std;const int maxn = 105;int degree[maxn];int map[maxn][maxn];int vis[maxn];int n,m;int ans;void init(){ mems原创 2016-07-29 22:30:27 · 1247 阅读 · 0 评论 -
约瑟夫环问题的两种解决方式(递归求解和数组模拟求解)
约瑟夫环问题各位Acmer肯定都遇到过,就是给你编号为从0~n-1的n个人,从头开始报数,报到m的人离场,问最后留下的人是几号。有两种方法解决这个问题第一种:数组模拟这种方法没什么好说的,就是模拟报数和离场的过程,加个访问数组标记一下谁离场了就好了package HomeWork;public class JosephRing1 { public static int jose原创 2016-06-19 13:03:26 · 4869 阅读 · 0 评论 -
快速幂算法
目标算法:快速幂算法应用范围:A^BmodCint PowerMod(int a, int b, int c){ int ans = 1; a = a % c; while(b>0) { if(b % 2 = = 1) ans = (ans * a) % c; b = b/2; a = (a * a) % c; } return ans;}原创 2016-07-25 19:20:54 · 323 阅读 · 0 评论 -
最短路算法之SPFA算法
目标算法:SPFA算法应用范围:最短路 算法代码:#includeusing namespace std;const int maxn = 205;vector >E[maxn];int n,m;int dis[maxn],vis[maxn];void init(){ for(int i=0;i<maxn;i++) E[i].clear();原创 2016-06-25 15:20:37 · 393 阅读 · 0 评论 -
MST算法之Kruskal算法
时间:2016/5/2(day1)目标算法:Kruskal算法应用范围:MST算法思路:将边按权值排序,从最小边开始依次将满足条件的边加入生成树中,条件为加入此边后不会形成环算法实现:用邻接表存图,调用STL中的qsort对边排序,用并查集实现判环,用ans变量判断生成树的边数,如果满足ans == 结点数-1,则可生成MST,否则无法生成返回-1oj测试:Hustoj 135原创 2016-05-02 00:23:36 · 1044 阅读 · 0 评论 -
MST算法之Prim算法
时间:2016/5/3(day2)目标算法:Prim算法应用范围:MST算法思路:从连通图的顶点集合V中任选一点作为源点加入集合U,从V-U的各顶点中选取距离U内顶点权值最小的点,并将该点加入U,直到生成MST算法实现:用邻接矩阵存图,将dis数组初始化为源点到各边的权值,然后从遍历dis数组,选出最小边并用vis数组标记,将此边加入生成树中并记录权值和,然后更新点到权值保证最小,原创 2016-05-02 19:53:03 · 684 阅读 · 0 评论 -
排序算法之快速排序
时间:2016/5/3(day3)目标算法:快速排序应用范围:排序算法思路:利用分治思想,选取数组最左端值设为x,调整数组使得x左边的数都比x小,右边的数都比x大,然后再对x两边的数重复上述步骤,直到无法分治。算法实现:设Array[0] = x,i = left,j = right,从后往前找比x小的数,进行调整,然后从前往后找比x大的数,进行调整,直到i == j,最后令Arr原创 2016-05-03 12:43:04 · 476 阅读 · 0 评论 -
排序算法之插入排序
时间:2016/5/4(day4)目标算法:插入排序应用范围:排序算法思路:从数组要排序的部分开始第二个值开始依次与前面的数比较,如果比前面的数小的话则交换位置,重复此过程直到数组有序。算法实现:从Array[l-1]开始循环,设置一个key保存当前值,然后依次与前面的值进行比较或交换,最后再将key值还原到插入的位置。时间复杂度:O(n^2)oj测试:hdu 2020原创 2016-05-04 22:30:38 · 337 阅读 · 0 评论 -
最短路算法之Dijkstra算法
时间:2016/5/5(day5)目标算法:Dijkstra算法应用范围:最短路算法思路:从有向图的顶点集合V中选一指定源点加入集合U,从V-U的各顶点中选取距离U内顶点权值最小的点,并将该点加入U,重复此步骤直到V用完。算法实现:用邻接矩阵存图,设dis数组储存源点所连接的最短边,用vis数组标记状态,然后遍历所有未使用边,找出最短边,更新邻接矩阵和dis数组。时间复杂度:O原创 2016-05-05 21:41:21 · 811 阅读 · 0 评论 -
最短路算法之Floyd算法
时间:2016/5/6(day6)目标算法:Floyd算法应用范围:最短路算法思路:动态规划的思想,从设有三点i,j,k,从I到k分为两种方法,一种为从i直接到k,另外一种是从I到j再到k。所以可以得到状态转移方程dis[I][k] = Min(dis[I][k],dis[I][j] + dis[j][k])。算法实现:用邻接矩阵存图,分别用0和Inf初始化邻接矩阵,然后三重for原创 2016-05-07 01:04:29 · 764 阅读 · 0 评论 -
Manacher算法--O(n)回文子串算法
O(n)回文子串算法注:转载的这篇文章,我发现下面那个源代码有点bug。。。在下一篇博客中改正了。。 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-lo转载 2016-08-09 10:04:01 · 294 阅读 · 0 评论