- 博客(23)
- 资源 (2)
- 收藏
- 关注
转载 最长递增子序列 O(NlogN)算法
今天回顾WOJ1398,发现了这个当时没有理解透彻的算法。看了好久好久,现在终于想明白了。试着把它写下来,让自己更明白。最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的L
2013-07-20 16:54:29
707
转载 UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
这是一堂关于UML基础知识的补习课;现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了;本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理,让我们在真正用UML进行比如类图设计时能够更加清晰明了;以下就分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它
2012-11-08 15:36:01
535
转载 JDK源码分析之Set类详解
JDK源码分析Set类,因为Set类是经常要用到的,那我们知道JDK源码中Set类在其中不可以有相同的元素,那么判断这个元素是否相同是如何实现的呢,我们看下下面这张图: 对JDK源码分析之Set类在这张类图上,首先我们看见一个经典模式的应用,那就是适配器模式,我们把map接口的对象,包装成为了Set的接口;在代码中,我们来分析一下;首先,我们看一下HashSetpri
2012-11-08 14:58:38
580
转载 java关键字Transient
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型
2012-11-08 14:57:35
502
原创 Java Collection 容器类分析与示例
Java中的Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List,set和map。所有实现Collec
2012-04-25 15:12:33
868
转载 C++中的接口与实现
C++中的接口与实现 所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。 我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。 虚函数: C++实现
2011-08-26 09:29:24
13294
2
转载 Linux程序设计——用getopt处理命令行参数
Linux下很多程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与用户进行交互的主要手段。具有可靠的复杂命令行参数处理机制,会使得您的应用程序更好、更有用。getopt()是一个专门设计来
2011-08-24 17:22:55
560
转载 Memcached源码分析(线程模型)
http://www.iteye.com/topic/344172目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之
2011-08-19 17:17:47
620
原创 字符串常量与字符串变量
定义:在一个双引号“ ”内的字符序列或者转义字符序列称为字符串常量例如:“HI HI!” “a” “\n\t”这些字符串常量是不能改变的,如果试图改变指针所指向的内容是错误的因为字符串常量是存在静态内存区的,不可以改变字符串变量,在c语言中没有纯粹的c
2011-08-19 17:14:38
5768
转载 重读经典-《Effective C++》Item2:尽量以const,enum,inline替换#define
本博客(http://blog.youkuaiyun.com/livelylittlefish )贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 1. 宏定义 #define ASPECT_RATIO 1.653该宏定义ASPEC
2011-08-10 09:54:12
777
转载 C++内存管理详解
踏入C++中的雷区——C++内存管理详解 这篇文章回答了我之前的一个问题,就是分配内存用malloc好,还是用new好,今天跑程序的时候,发现malloc老是失败,气得不行,最后看到了这篇文章,原来如此,以后坚决用new了。。。。 1、有了m
2011-08-09 17:36:46
579
转载 3年工作经验程序员的发展之路
<br /><br />自己作为一名普通的程序员,工作3年多,技术有一定积累,但目前存在最大的困惑在于不知道将来的方向是什么,不知道该往哪个具体的业务方向发展。<br /> 一次很偶然的机会,很幸运地和优快云 CEO蒋涛先生见了面,并得到了他提供的一些宝贵的经验和意见,总结如下:<br /><br />----------------------------------------------------------<br />发展方向:<br />一、磨炼技术<br /> 1. 当前公司内部的
2010-12-15 11:04:00
816
转载 失败者的七个习惯
1、从每次机会中总会看到疑问(Sees a problem in every opportunity)失败者往往觉得自己做出的决定不太对。他会把积极的事情看得消极,认为每一个机会都存在问题。看到别人的成功,他总是觉得那是因为其他人都比自己幸运。2、推卸责任(Passes the buck)失败者在生活中缺乏自信,他把自己看作是现实生活的受害者,他把自己的失败归咎于别人或者生活对自己不公平。3、用抵触的语气(Uses antagonistic phrases)失败者在生活中通常都
2010-12-05 15:51:00
953
原创 动态规划 矩阵链乘法
Description给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 Input有N个矩阵连乘,用一行有n+1个数数组表示,表示是n个矩阵的行及第n个矩阵的列,它们之间用空格隔开. Output你的输出应该有C行,即每组测试数据的输出占一行,它是计算出的矩阵最少连乘积次数,输出最优全括号结构Sample Input10 100 5 50Sample Output7500((A1A2)
2010-12-05 13:45:00
15381
转载 01背包问题(动态规划DP)
<br />#include<iostream>using namespace std;int c[10][100];/*行代表是覆盖的背包个数,而列代表背包容量*/int Knapsack(int n,int m){ int i,j; int w[10],v[10];/*分别代表各个物品的重量和价值*/ for(i=1;i<=n;i++) scanf("%d%d",&w[i],&v[i]);/*输入每个物品的重量W和价值V*/ for(i=0;i<10;i++)/*初
2010-11-26 18:15:00
1574
原创 动态规划:最长公共子序列
问题描述我们称序列Z = 是序列X = 的子序列当且仅当存在严格上升的序列,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = 是X = 的子序列。现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找到一个最长的序列Z,使得Z既是X的子序列也是Y的子序列。输入数据输入包括多组测试数据。每组数据包括一行,给出两个长度不超过200的字符串,
2010-11-22 19:06:00
6956
1
转载 一些重要的算法
<br /> <br />酷壳: http://CoolShell.cn/ <br />原文: http://coolshell.cn/?p=2583 <br />下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的或是比较生僻的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)A*搜寻算法<b
2010-11-22 15:16:00
1280
原创 动态规划:最长上升子序列
<br /> <br />问题描述<br />一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).<br
2010-11-22 15:14:00
42870
1
原创 单链表的逆向反转(V1.0)
链表的逆转算法是常规招聘中的考题,比较灵活,现在给出整个实现的代码,仅供各位参考~~~~~~~~~该算法暂时只考虑了实现功能,未进行优化,未释放指针。该算法主要的思想是:设置三个节点分别指向原来链表的前三个节点,然后依次移动三个指针,直至到达尾节点。#include #include #include struct Node{ int key; struct Node* next;};Node *Reverselist(Node *head){ //头结点为空或者只有一个结点,直接返回该结点 if(NULL
2010-11-19 23:06:00
1552
原创 二叉树的非递归算法总结
二叉树的非递归算法,采用栈实现,本文给出了从设置栈到利用栈的完整代码,其中二叉树的后序遍历需要采用标志位,这样才可以有序的变非线性的结构为线性结构,二叉树生成的过程没有考虑平衡性的影响。期待下一步实现平衡二叉树遍历的实例。#include #include #include #define maxsize 30typedef struct BinaryTree{int key;struct BinaryTree *left;struct BinaryTree *right;}Node,*node;
2010-11-19 21:59:00
769
原创 二叉树的递归算法
很多数据结构的书中,都会详细的谈论很多数据结构,比如,线形表,树,图...而实际项目中,最常用的莫过于数组和链表,以及树(最多的还是二叉树),但是这些代码中多以伪代码居多,并且代码不完整,缺少注释。最近对数据结构复习了一阵,对二叉树做一个小结,以下是二叉树的递归代码。#include #include #include typedef struct BinaryTree{int key;struct BinaryTree *left;struct BinaryTree *right;}Node;Node *
2010-11-19 21:55:00
1302
转载 中文分词算法
中文分词算法现在一般分为三类:基于字符串匹配,基于理解,基于统计的分词。基于字符串匹配分词:机械分词算法。将待分的字符串与一个充分大的机器词典中的词条进行匹配。分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。。。实际应用中,将机械分词作为初分手段,利用语言信息提高切分准确率。优先识别具有明显特征的词,以这些词为断点,将原字符串分为较小字符串再机械匹配,以减少匹配错误率;或将分词与词类标注结合。基于理解分词:
2010-11-02 20:00:00
888
转载 为何有些云比其他云更可信
(本文原文为英文“Why and how some cloud can be more trustworthy than the other”,作者于2010年10月29日发表于EMC Community Network: https://community.emc.com/community/labs/blog/2010/10/29/why-and-how-a-cloud-can-be-more-trustworthy-than-the-other )下图描绘了一个云上信息处理的典型场景(该图构造结合了两
2010-11-02 19:59:00
542
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人