算法
俊哥有个blog
这个作者很懒,什么都没留下…
展开
-
深度优先遍历与广度优先遍历
代码一修改就乱了,CSDN这方面还有等提高啊~~~~~~~//zhangjun03402@163.com#include #include #define MAX_NUM 4using std::cout;using std::cin;using std::endl;typedef struct ArcNode{ int adjvex; struct Arc原创 2012-03-29 09:09:09 · 930 阅读 · 0 评论 -
Huffman(哈夫曼)树编码与解码程序(全)
关于Huffman树构建与编码的原理,很多书上有介绍,我在这里就只给出相应的程序,包括树的构建,2种编码方法,译码(这部分是我自己独立写的,肯定有不当之处,欢迎回帖指正)等,里面注释也很清晰,费了很大劲,希望对大家有帮助。//zhangjun03402@163.com#include <iostream>using namespace std; int m, s1,...原创 2012-03-24 18:16:23 · 15227 阅读 · 2 评论 -
用递归法求因式分解
求一个整数的因式分解!原创 2012-03-09 23:29:21 · 2354 阅读 · 0 评论 -
用堆实现优先级队列
用堆实现优先级队列原创 2016-06-14 14:34:50 · 500 阅读 · 1 评论 -
manacher算法求最长回文子串(Longest Palindromic Substring)
经典的快速求最长回文子串的算法是manacher算法(俗称“马拉车”),时间复杂度o(n),感觉能在o(n)时间内解决问题的算法都是神啊。不过这个算法用处比较单一,思想也不具有普遍性。回文这个东西,本来用的就不多,看看理解一下就好。推两篇博文:博文一,博文二。一是英文,二是中文,看完之后就应该能理解的差不多了,其中博文二在博文一的参考文献里,外国人居然也看中文博客,惊奇!下面自己对一些比较原创 2016-01-14 12:17:25 · 426 阅读 · 0 评论 -
倍增算法的另一种解法
网上一搜索倍增算法,基本就是罗穗骞同学的介绍。这同学高中时期就研究这么深入,让我这研究生毕业的人汗颜,慢慢爬坑吧。不过说实在的,这代码写的实在看着有点费劲。网上又有人整理了下。不过我看的还是一头雾水,希望有明白人能说明一下。要想了解倍增算法,最好先对RMQ和基数排序算法有一定了解,还要了解一下后缀数组。下面把代码贴过来。例子图如下:但是代码的实现和这个图出入很大,不好理解。原创 2016-01-08 15:28:40 · 4230 阅读 · 0 评论 -
后缀数组的应用
想要了解后缀数组,可以在网上搜索罗同学的论文,这里的代码更容易理解些。构造后缀数组并求这些数组的最长公共前缀是基本操作,就用途来说没有意义,一般都是利用这个结果进行其它操作,它在很多OJ题或面试题里的字符串操作中会用到,下面是一些例子:1. 求一个字符串所有不同的子串个数(子串意味着是连续的)。比如“abaaba”,它的字串包括:a, b, aa, ab, ba, aba, baa, aab原创 2016-01-18 12:32:59 · 715 阅读 · 0 评论 -
基本排序算法汇总
把一些常用的基本排序算法汇总下来,以后忘记了回头看看,回忆的也快。代码实现中加入了自己的一些理解,把我看到的别人的实现中比较巧妙的放在这。一种经过优化后的快速排序,来自《数据结构与算法分析》weiss,是本不错的书:快速排序:void Insertsort(int A[], int len){ int tmp; int i, j; for(i=1;原创 2012-07-15 23:22:26 · 820 阅读 · 0 评论 -
RMQ算法
RMQ(Range Max/Min Query)算法,即区间最大/最小值查询算法。给定一个长度为n的数串A,RMQ(A,i,j)即是查找A中第i到第j个数中间最大/最小的数(1设A是要求区间最值的数串,F[i, j]表示从第i个数起连续2^j个数中的最大值。注:同其它动态规划状态数组类似,下标都是从1开始,下标0为初始化值,初始化值则根据问题不同,取值不同。例如:A数列为:3原创 2015-12-31 16:40:32 · 1836 阅读 · 0 评论 -
写一个函数,检查字符是否是整数,如果是,返回其整数值(最好用四句代码写出)
#include using namespace std;long strtoint(char* str, int len) { if(len > 1) { return str[0]=='-' ? strtoint(str, len-1)*10-(str[len-1]-'0') : strtoint(str, len-1)*10+str[len-1]-'0转载 2012-09-12 23:44:25 · 1357 阅读 · 0 评论 -
最短路径算法:迪杰斯特拉(Dijkstra)和弗罗伊德(Floyd)
关于迪杰斯特拉(Dijkstra)和弗罗伊德(Floyd)算法的思想,严蔚敏老师书上,还有网络上一些博客,讲的比较清楚了,这里只一并给出其实现及驱动源码,注释也比较详细。算法思想非本人原创,只是做一些实现上的小技巧而已,欢迎大家交流、转载,转载请注明出处。我的邮箱:zhangjun03402@163.com。#include#includeusing namespace std;原创 2012-04-05 18:11:53 · 5972 阅读 · 0 评论 -
topK算法
一个不错的topK的示例代码!class Solution {public: void adjust(vector<int> &arr, int index, int len) { int left = 2 * index + 1; int right = 2 * index + 2; int max_index ...原创 2019-09-11 14:54:03 · 210 阅读 · 0 评论