会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
lineaar
博客园
首页
新随笔
联系
管理
订阅
03 2017 档案
编辑距离问题
摘要:编辑距离问题: 编辑距离,又称Levenshtein距离,是一种字符串之间相似度计算的方法,指两个字符串之间,由一个转换成另一个所需的最少编辑次数。有效的编辑操作为单个字符的替换、插入和删除。对给定两个字符串S、T,将S转换成T所需要的删除,插入,替换操作的数量就叫做S到T的编辑路径。而最短的编辑路
阅读全文
posted @
2017-03-31 20:36
lineaar
阅读(535)
评论(0)
推荐(0)
二项队列
摘要:如上图所示为二项队列,不是一棵树而是一片森林,其合并操作有点像二进制加法,当两个二进制相加的某位都有1时,则当进位为0时,此位相加后的结果也为0,删除最小值操作则先找出最小的树根,把该树的树根去掉之后形成许多子树,用这些子树构成一个新的二项队列,再去跟原来剩下的二项式队列相加即可,删除时主要考虑的是
阅读全文
posted @
2017-03-31 16:21
lineaar
阅读(561)
评论(0)
推荐(0)
整齐打印
摘要:问题: 考虑整齐打印问题,即在打印机上用等宽字符打印一段文本。输入文本为n个单词的序列,单词长度分别为l1,l2,……,ln个字符。要求将此段文本整齐打印在若干行上,每行最多M个字符。若每行包含第i到底j(i<=j)个单词,且单词间隔为一个空格符,则行尾的额外空格符数量为M-j+i-(li+……+l
阅读全文
posted @
2017-03-30 23:25
lineaar
阅读(908)
评论(0)
推荐(0)
左式堆
摘要:数据结构中最欣欣向荣的两个分支就是:平衡树 和可合并堆,高级树结构的核心都是围绕如何使树到达平衡而展开,高级堆结构的核心就是如何有效地进行合并。左式堆由于使用二叉链表的存储结构,对动态操作支持良好,在需要合并操作的场合,是极佳的选择。 左式堆的性质: 1.【堆性质】:任意节点的关键字大于等于其孩子节
阅读全文
posted @
2017-03-30 16:56
lineaar
阅读(236)
评论(0)
推荐(0)
双调巡游
摘要:问题 给定平面上n个点作为输入,求出连接所有n个点的最短巡游路线。 J.L.Bentley建议将问题简化,限制巡游路线为双调巡游,即从最左边的点开始,严格向右前进,直至最右边的点,然后调头严格向右前进,直至回到起始点。 设计一个O(n^2)时间的最优双调巡游路线算法,可以认为任何两点的x坐标均不同,
阅读全文
posted @
2017-03-29 23:13
lineaar
阅读(1197)
评论(0)
推荐(0)
最长回文算法2
摘要:问题: 求给定输入字符串的最长回文子序列(子序列不要求连续)。 用LPS(i,j)表示从字符串第i个字符到第j个字符的最长回文子序列的长度,字符串的长度为n,则要求LPS(1,n),则: LPS(i,j)=0; i>j; LPS(i,j)=1; i==j; LPS(i,j)=LPS(i+1,j-1)
阅读全文
posted @
2017-03-29 21:30
lineaar
阅读(211)
评论(0)
推荐(0)
散列表保存多项式链表相乘的结果
摘要:多项式用链表保存,设多项式的最高次为M和N,则申请一个大小为M+1+N的散列表,其中M+1+N不必是素数,用结果多项式的阶次对M+1+N取余作为散列函数,可以把多项式第i阶次项的系数保存在散列表第i项上,方便后续重建多项式的链表。
阅读全文
posted @
2017-03-29 15:54
lineaar
阅读(189)
评论(0)
推荐(0)
最长回文(通过比较原字符串和其翻转字符串)
摘要:// zuichanghuiwen.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; void palindrome(string str) { stack sta; //翻转字符串 for (int i...
阅读全文
posted @
2017-03-29 09:45
lineaar
阅读(227)
评论(0)
推荐(0)
开放定址散列表
摘要:再散列之后散列函数要重新计算。
阅读全文
posted @
2017-03-28 21:06
lineaar
阅读(310)
评论(0)
推荐(0)
散列表(冲突用链表解决)
摘要:#include "stdafx.h" #include #include using namespace std; #ifndef _HashSsp_ struct ListNode; typedef struct ListNode *Position; struct HashTbl; typedef struct HashTbl *HashTable; HashTable Initiali...
阅读全文
posted @
2017-03-28 16:50
lineaar
阅读(508)
评论(0)
推荐(0)
最优二叉树搜索
摘要:// zuiyousousuoerchashu.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; double p[] = { 0,0.15,0.1,0.05,0.10,0.2 }; double q[] = { 0.05,0.10,0.05,0.05,0.05,0.10}; double ...
阅读全文
posted @
2017-03-24 17:25
lineaar
阅读(378)
评论(0)
推荐(0)
最长公共子序列
摘要:// zuidazixulie.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; char b[10][10]; int c[10][10]; void Lcs(string x, string y) { int m = x.length(); int n =...
阅读全文
posted @
2017-03-24 14:43
lineaar
阅读(129)
评论(0)
推荐(0)
队列和栈
摘要:使用标准库的栈和队列时,先包含相关的头文件 #include<stack> #include<queue> 定义栈如下: stack<int> s; 定义队列如下: queue<int> q;
阅读全文
posted @
2017-03-22 22:36
lineaar
阅读(162)
评论(0)
推荐(0)
斐波那契数列(动态规划)
摘要:#include "stdafx.h" #include using namespace std; #define MAXSIZE 100 int bofei_bottom(int n) { int f[MAXSIZE]; f[0] = 0; f[1] = 1; for (int i = 2; i <= n; i++) { f[i] = f[i - 1] + f[i - 2]; ...
阅读全文
posted @
2017-03-22 19:00
lineaar
阅读(557)
评论(0)
推荐(0)
切割问题(包含切割成本)
摘要:// dongtaiguihua.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; int num[11]; #define c 2; int p[] = { 0,1,5,8,9,10,17,17,20,24,30 }; ////自顶向下递归实现///////...
阅读全文
posted @
2017-03-22 11:38
lineaar
阅读(183)
评论(0)
推荐(0)
二叉树练习
摘要:// erchashu_xiti.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; //////////定义树节点结构 typedef struct Tree { int key; Tree* p; Tree* left; Tree* right;...
阅读全文
posted @
2017-03-21 23:38
lineaar
阅读(200)
评论(0)
推荐(0)
队列
摘要:// duilie.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; struct QueueRecord; typedef struct QueueRecord *Queue; int IsEmpty(Queue Q); int IsFull(Queue Q); Que...
阅读全文
posted @
2017-03-21 23:37
lineaar
阅读(177)
评论(0)
推荐(0)
线性选择算法的递归实现和循环实现
摘要:主要是利用快排的RANDOMIZED_PARTTITION()函数返回一个第q小的数,且第q小的数的坐标是绝对坐标而不是相对坐标,比如输入坐标范围为[p,r]的数组,第q小的数会返回p+q-1的坐标。
阅读全文
posted @
2017-03-17 23:32
lineaar
阅读(264)
评论(0)
推荐(0)
随机快速排序
摘要:#include "stdafx.h" #include #include #include using namespace std; int RANDOM(int p, int r) { srand((unsigned)time(NULL)); return (rand() % (r - p + 1)) + p; } int partition(int a[], int p, ...
阅读全文
posted @
2017-03-17 22:35
lineaar
阅读(144)
评论(0)
推荐(0)
后缀运算
摘要:#include "stdafx.h" #include #include #include #include using namespace std; int main() { stack stk; string str; cin >> str; char h; int sum, b; for (int i = 0; i = 'A'&&str[i] <= 'F') ...
阅读全文
posted @
2017-03-17 21:24
lineaar
阅读(275)
评论(0)
推荐(0)
二叉树
摘要:1 #include "stdafx.h" 2 #include 3 #include 4 using namespace std; 5 typedef int ElementType; 6 7 8 struct TreeNode; 9 typedef struct TreeNode *Position; 10 typedef struct TreeNo...
阅读全文
posted @
2017-03-16 23:11
lineaar
阅读(132)
评论(0)
推荐(0)
基数排序-
摘要:#include "stdafx.h" #include using namespace std; //是权位数列,B是输出数列,D是原数列,k是范围 void COUNTING_SORT(int A[], int B[],int D[], int k) { int C[10]; for (int i = 0; i = 0; i--) { B[C[A[i] - 1] - 1] = D[...
阅读全文
posted @
2017-03-16 21:33
lineaar
阅读(136)
评论(0)
推荐(0)
公告