![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 76
traceorigin
这个作者很懒,什么都没留下…
展开
-
字符串的相似度
许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符(如把“a”替换为“b”); 2.增加一个字符(如把“abdd”变为“aebdd”); 3.删除一个字符(如把“travelling”变为“traveling”); 比如,对于“abcdefg”和“abcdef原创 2013-04-30 11:02:18 · 1545 阅读 · 0 评论 -
动态规划&备忘录方法&递归方法
动态规划的基本思想是,将原问题拆分为若干子问题,自底向上的求解。其总是充分利用重叠子问题,即通过每个子问题只解一次,把解保存在一个表中,巧妙的避免了子问题的重复求解。 递归方法,采用的是自顶向下的思想,拆分为若干子问题,但是造成了子问题的重复求解。 备忘录方法,采用的也是自顶向下的思想,但是该方法维护了一个记录子问题解的表,虽然填表动作的控制结构更像递归方法,但是的确避免了子问题的重复求解。原创 2013-04-30 13:22:16 · 7644 阅读 · 0 评论 -
斐波那契数列
当n=0时,f(n) = 0 当n=1时,f(n) = 1 当n>1时,f(n) = f(n-1) + f(n-2) 递归算法: int fun(int n) { if(n <= 0) return 0; if(n == 1) return 1; return fun(n-1)+fun(n-2); } 备忘录方法: #include us原创 2013-04-30 14:04:10 · 2004 阅读 · 1 评论 -
KMP算法
KMP算法关键是构造next数组。其主要思想是寻找前缀串和后缀串的相等的最大长度。 当next[j]=k时,p(0)...p(k-1)=p(j-k)...p(j-1) 对于next[j+1]有两种情况: A. p(k)=p(j), 则next[j+1] = k+1 B. p(k)!=p(j), 则令k=next[k]继续匹配,直到next[k]=-1; #include usin原创 2013-05-04 20:05:12 · 758 阅读 · 0 评论 -
最长对称子串
题:给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度。回文就是正反读都是一样的字符串,如aba, abba等。 例如:aaaa与abab:最长的回文串长度分别为4、3。 解法一:暴力方法---从外往里 对每一个字符,从该字符往右走,同时从串的结尾往中间走。若相遇,则对称;否则,不对称。复杂度O(n3) #include #include原创 2013-05-07 21:39:36 · 1886 阅读 · 0 评论 -
链表小结
本章主要内容如下: * 带头结点的链表反转 * 不带头结点的链表反转 * 链表有环 1、 带头结点的链表反转 思路:遍历每个节点,将其插入到头结点跟第一个节点之间,使其成为新的第一节点,其他的相应后移,即可实现。复杂度O(n) #include #include struct ListNode { int data; struct ListNode *next; };原创 2013-05-12 13:12:41 · 664 阅读 · 0 评论 -
一道笔试题
战报交流:战场上不同的位置有N个战士(n>4),每个战士知道当前的一些战况,现在需要这n个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,使得战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。 先思考这么个问题: 有a个node的cluster1和b个node的cluster2转载 2013-05-12 13:41:43 · 1550 阅读 · 0 评论