- 博客(40)
- 收藏
- 关注
凸包问题的Graham扫描法
格雷厄姆扫描法是利用平面上任意3 点所构成的回路是左转还是右转的判别法来求平面点集的凸包。1.三角区符号的计算点o(a,b),p(c,d),q(e,f)是平面上的任意三点,D=ab+cf+eb-bc-de-fa当D 为正时,o,p,q,o 构成一个反时针方向的回路,即o,p,q,是左转的;当D 为负时,o,p,q,o 构成一个顺时针方向的回路,即o,p,q 是右转的;当D 为零时,此三...
2011-08-31 13:44:00 170
循环双向链表类
明天开学了 暑假大概地过完了一遍基本的数据结构 现在也要开始复习 边学其他的东西了 大二开始了 加油 下面的循环双向链表作为链表类的第一个复习文件"dlist.h"#include<iostream>using namespace std;template<class T>class DList;template<class T>class...
2011-08-28 23:17:00 75
标 题: C语言中史上最愚蠢的Bug(zz)
发信人: josephpei (Nikon,感动常在), 信区: CProgramming标 题: C语言中史上最愚蠢的Bug(zz)发信站: 水木社区 (Fri Aug 26 15:59:46 2011), 站内http://coolshell.cn/articles/5388.html本文来自“The most stupid C bug ever”,很有意思,分享给大家。我相信这样的bug...
2011-08-27 15:57:00 62
MFC简易文本编辑
程序中用到的一些函数//创建插入符void CreateSolidCaret(int nWidth, int nHeight);nWidth Specifies the width of the caret, in logical units. If this parameter is zero, the width is set to the system-defined win...
2011-08-26 00:56:00 152
同事推荐的英语学习方法
本文作者三年间从四级勉强及格到高级口译笔试210,口试232。找工作面试时给其口试的老外考官听了一分钟就说你的英语不用考了。虽不敢说方法一定是最好的,但从现在开始随便谁不要再去找学习资料,每天花两个钟头照说的做,坚持三个月的提高会超过你过去三年。听:网上比较有代表性的论坛是普特www.putclub.com上面的听力资源很丰富,沪江www.hjenglish.com和旺旺www.w...
2011-08-24 23:21:00 89
MFC简易绘图
CDrawView::CDrawView(){ // TODO: add construction code here m_ptOrigin=0; m_ptOld=0; m_bDraw=FALSE;}void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handl...
2011-08-23 23:37:00 100
模拟窗口类的封装
下面是模拟窗口类CWnd的封装,当然只是很简单的模拟,创建窗口,显示窗口和更新窗口,下面是代码#include<stdio.h>#include<windows.h>class CWnd{public: CWnd(); BOOL CreateEX( DWORD dwExStyle, // extended window style LPC...
2011-08-23 14:47:00 81
七种武器:怀念键盘
七种武器:怀念键盘用计算机的人,把工具视为武器。所以,我们有很多武器。有些,是花哨而炫目的,有些是沉重得没有声音的。键盘,是一种武器。老家伙的武器。时代发展,老家伙们不断地落后于时代,看这个也不惯,那个也不惯。最后,就变成了一群被时代淘汰的人。我也会是其中之一。典典同学不知道从哪拍了张mazhazi的照片,放在人人网上,叫嚣着让大家认那是啥。mazhazi是一种类似...
2011-08-22 22:45:00 86
VC学习笔记之——GetMessage函数
BOOL GetMessage( LPMSG lpMsg, // message information HWND hWnd, // handle to window UINT wMsgFilterMin, // first message UINT wMsgFilterMax // last message);在GetMessage函...
2011-08-22 20:52:00 360
诡异的java.lang.IllegalMonitorStateException
今天的一段代码抛出了java.lang.IllegalMonitorStateException,代码如下: private boolean wait = false; public boolean pleaseWait() { synchronized (this.wait) { if (this.wait == true) { return false; } ...
2011-08-22 20:39:00 1045
Bucket_Sort and Radix_Sort
这个是原文地址 点此连接。桶式排序桶式排序的原理是:利用待排序序列元素的值作为新序列的索引进行插入,完成新序列的建立后,只需对新序列进行遍历即可完成排序(具体遍历过程和新序列元素的值有关)假设有N个整数的序列,范围从0到M-1。现建立一个名为Count的桶序列,长度为M,并初始化为0。于是,Count有M个桶,开始时都是空的。对待排序序列进行遍历,当遍历至原序列元素Ai时,Co...
2011-08-22 17:16:00 69
归并排序的两种实现形式
下面是代码和示意图,一种是迭代一种是递归首先是迭代:#include<iostream>using namespace std;void Merge(int a[],int b[],int l,int m,int n){ //将两个已经排好序的数组a[l,...,m]和b[m+1,...,n]合并为 //有序的数组b[l,...,n] for(int i1=l,i...
2011-08-21 16:43:00 164
基于Heritrix的增量抓取
虽然打着Heritrix的名头,但本文更多的还是谈谈增量抓取的基本思想,Heritrix只是正好被用来做为例子。如果你不是随便写个爬虫抓着玩,那么一定会碰到一个问题,就是增量抓取。不管是百度,google这样的广泛搜索引擎,还是现在很火的垂直搜索,增量抓取一定都是做爬虫的最需要考虑的问题。之所以需要增量抓取的原因,有两个:1. 网站总是在不断的发生着变化。或者添加了新的网页,或者旧...
2011-08-21 15:10:00 109
Heritrix架构简述
本文的目的,其实是希望通过对heritrix架构的分析,了解如何实现一个网络爬虫。Heritrix的架构如图:Web Administrative Console: 就是一个基于web的控制台。Heritrix内嵌了Jetty就是为了做这事。CrawlOrder:这东西的名字有些奇怪。但其实就是一个crawl任务的配置。它是一个基于XML的object,Heritrix根据Cr...
2011-08-21 13:15:00 136
Heritrix控制抓取速度
Heritrix通过三个参数来控制爬虫抓取的速度,位于每个Job的setting处,如图:delay-factor是一个因子,表示两次抓取之间的delay应该是上一次抓取的延迟 * delay-factor:举例来说,如果将delay-factor设置为4,前一次抓取花费了500ms的时间,那么要间隔 500ms * 4 = 2s的时间才进行下一次的抓取;这个参数的好处在于它可以动...
2011-08-21 12:13:00 97
Heap_Sort,Shell_Sort and Quick_Sort
介绍三种排序,堆排序、希尔排序和快速排序。首先是堆排序:一个有n个记录的线性序列{R1,R2,R3,....Rn},其关键字序列{K1,K2,....,Kn} 满足{Ki<=K2i Ki<=K(2i+1)}或者是大于等于 那么就称之为堆。如果用一课完全二叉 来表示堆的话,就是说该树中的非叶子结点的值均不大于(或不小于)其左右两个分支结点的值。堆排序有两个关键步骤:(1...
2011-08-20 17:25:00 100
Hash表(C++实现)
哈希表的几个概念:映像:由哈希函数得到的哈希表是一个映像。冲突:如果两个关键字的哈希函数值相等,这种现象称为冲突。处理冲突的几个方法:1、开放地址法:用开放地址处理冲突就是当冲突发生时,形成一个地址序列,沿着这个序列逐个深测,直到找到一个“空”的开放地址,将发生冲突的关键字值存放到该地址中去。例如:hash(i)=(hash(key)+d(i)) MOD m (i=1,2,3,...
2011-08-20 00:19:00 407
求AOE网的关键路径
以边表示活动,以顶点表示事件的有向网称为AOE(activity on edge)网.AOE网是一个有向无环图,权值表示活动持续的时间。可以用AOE网来估计工程完成的时间。由于工程只有一个开始点和一个完成点,所以在无环路的条件下,网中只有一个入度为0的点和一个出度为0的点.下面是几个和AOE网有关的概念:(1)路径长度:路径上各个活动的持续时间之和(2)完成工程的最短时间:...
2011-08-18 00:03:00 325
拓扑排序
在图中用顶点表示活动,用弧表示活动间的优先关系,这样的有向图成为AOV网。下面是AOV网的拓扑排序,可以用来检验类似:工程之间有约束关系的,检验看工程的安排是否合理;课程之间有约束的,课程的前后顺序安排是否合理,这就是拓扑排序的一个应用。文件"topo.h"#include<iostream>#include<string>#include<queue...
2011-08-17 19:20:00 66
求最短路径之——Floyd算法
要求有向网中每两个顶点之间的最短距离,用Dijkstra算法的话,只需要将每个顶点都作为一次源点就可以,用Floyd算法的话,虽然在时间复杂度上和Dijkstra算法一样,但是形式上更为简便,整体性更好。下面是代码:文件"graph.h"#include<iostream>#include<string>using namespace std;const i...
2011-08-17 00:52:00 122
求最短路径之——Dijkstra算法
Dijkstra算法适用于求某源点到其他顶点的最短路径问题,下面是代码。文件"graph.h"#include<iostream>#include<string>using namespace std;const int MAX=99999;const int MAX_VEX_NUM=20;class MGraph{private: string ...
2011-08-16 18:27:00 197
无向网的最小生成树(Kruskal算法)
最小生成树的Kruskal算法,适用于边较少的连通网,下面的算法中没有将其像上一篇日志一样转换为一棵树,要转换的话就像上一篇日志一样,进行建树就可以了,下面是代码"graph.h"文件#include<iostream>#include<queue>#include<string>using namespace std;const int MA...
2011-08-16 10:59:00 468
无向网的最小生成树(Prim算法)
适用于边较为稠密型的连通网假设N=(V,{VR})是一个连通网,TE是V上的最小生成树的边的集合,Prim算法从U={u0}(u0∈V) ,TE={}开始,重复执行下面的操作:在所以的u∈U,v∈V-U的边(u,v)∈VR中找一条权值最小的边(u0,v0),并入集合TE,同时v0并入U,直至U=V为止。此时TE中必有n-1条边,则T=(V,{TE})为N的最小生成树。为了实现这个算法,需引...
2011-08-15 18:58:00 937
研究称开放式办公布局对大脑有害 转载和评论
研究称开放式办公布局对大脑有害 转载和评论如果这是真的,那么说明,开放办公室编码和办公,是多么鼠目寸光的省钱行为.研究称开放式办公布局对大脑有害http://science.solidot.org/article.pl?sid=11/08/12/1014209&amp;from=rssby blackhat你是否认为在办公室里无法集中注意力?那就谴责办公室结构吧...
2011-08-14 16:11:00 58
无向图的广度优先生成树
以邻接表为存储结构的无向图的广度优先生成树,以广度优先遍历的思想为主线。下面是代码:#include<iostream>#include<string>#include<time.h>using namespace std;const int MAX_VERTEX_NUM=20; //顶点最大值bool visited[20];//用于遍历时辅助...
2011-08-14 12:29:00 453
STL 关联容器
关联容器(Associative Container)与顺序容器(Sequential Container)的本质区别在于:关联容器是通过键(key)存储和读取元素的,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 关联容器支持通过键来高效地查找和读取元素,两个基本的关联容器是map和set。map的元素是“键-值”对的二元组形式:键用作元素在map中的索引,而值则表示所存储和...
2011-08-13 20:34:00 42
STL list
概述STL::list是STL最常用的容器之一,其本质上是一个双向环状链表,链表每一个结点内容如下:templatestruct __list_node {typedef void* void_pointer;void_pointer next; // 指向下一个节点的指针void_pointer prev; // 指向前一个节点的指针T data; //list 数据...
2011-08-13 15:59:00 47
STL vector
1. 概念vector是一种序列式容器,所谓序列式容器,即其中的元素可以排序,但是并未排序。可以把vector可作为加强版的array,它和array一样,存储空间是一段连续的内存,因此支持随机访问,但是,和array相比,vector支持动态增加数据。vector支持动态增加数据,同时又需要保持空间的连续性从而支持随机访问,因此,在对vector动态增加元素时,如果旧有空间装满,需要申请...
2011-08-13 15:29:00 44
广义表(C++实现)
广义表在学稀疏矩阵之后就应该学的,只是那时觉得看起来晕晕就跳过了,现在回头学了一下,觉得还是不错的一种结构。下面是代码:文件"glist.h"#include<iostream>#include<string>using namespace std;enum elemTag {ATOM,LIST}; class GList;class GLnode{...
2011-08-13 13:18:00 264
模拟程序的结果证明:恋爱不能认死理
刚刚看了科学松鼠会的一篇文章《死理性派恋爱法:拒绝掉前面37%的人》,我照着文章的结论,写了一段C++代码做模拟。程序运行的结果证明:如果拒绝掉前37%的人,会经常出现"Sigh"的悲剧。所以说松鼠会的这篇文章有一定的误导性,不过文章的确也提到了这种风险:不过,37% 法则有一个小问题:如果最佳人选本来就在这 37% 的人里面,错过这 37% 的人之后,她就再也碰不上更好的了。...
2011-08-13 12:04:00 108
牙疼时读隋唐英雄们
牙疼时读隋唐英雄们这篇也是关于工程的,最终所有的感想都会是关于工程的。因为你看,我是个工程师,你还指望我能说些别的什么。牙疼,治了一个多月了。或者,更严格的说,我这辈子都在治牙,现在四颗恒牙,就是被指望用一辈子的那四颗,上面各有钻了一个洞,然后堵上了。如果你不能想像钻的时候和所谓根管治疗的时候有多疼,我给你讲两件事。其一。在那万恶的旧社会,我绝无可能成为优秀的地下党员。因为...
2011-08-12 22:43:00 99
平衡二叉树(AVL树)的基本操作(附有示意图)
平衡二叉树关于树的深度是平衡的,具有较高的检索效率。平衡二叉树或是一棵空树,或是具有下列性质的二叉排序树:其左子树和右子树都是平衡二叉树,而且左右子树深度之差绝对值不超过1. 由此引出了平衡因子(balance factor)的概念,bf定义为该结点的左子树的深度减去右子树的深度(有些书是右子树深度减去左子树深度,我是按照左子树减去右子树来计算的,下面的代码也是这样定义的),所以平衡二叉树的结点的...
2011-08-10 19:30:00 380
新公司入职
上周五从F公司离职,本周一,也就是今天我加入了I公司。上午办完了人力的持续,下午和经理 以及Team Leader 见面,商谈了下一步学习与工作计划。之后就是走CheckList,申请设备,自我介绍等等。 目前急需提高的是英语的听、说、写的能力,下午的会议,一位来自英国的领导让我做自我介绍,我当时头脑一片空白,憋了将近十秒钟,第一句话居然是“I feel a little nervous...
2011-08-08 23:44:00 55
二叉排序树(二叉搜索树)
动态查找表的一种理想数据结构。二叉排序树的定义是:二叉排序树T是一棵树,它或者是空,或者具备一下三条性质:(1)、如果T的根节点的左子树非空,其左子树所有结点的值均小于T的根节点的值(2)、如果T的根节点的右子树非空,其右子树所有结点的值均大于T的根节点的值(3)、T的根结点的左右子树均为二叉排序树下面是代码:文件"tree.h"#include<iostream...
2011-08-07 11:47:00 131
无向图的深度优先生成树
用邻接表存储的无向图的深度优先生成树,树结点用孩子兄弟结构保存。下面是代码#include<iostream>#include<string>using namespace std;#define MAX_VERTEX_NUM 20bool visited[20];//用于遍历时辅助使用bool searched[20];//用于建树时辅助使用//循环队...
2011-08-06 16:46:00 2228 2
邻接表存储有向图的两种遍历方式
用邻接表存储的有向图,因为在建立邻接表的时候,建的链表都是头插入的,所以遍历出来的顺序和原先设想的是相反的,就是从下往上的。为了减少一些无谓的操作,所以在程序中加入了一个全局变量 Vex_Num 来记录输出顶点的数目,一旦全部顶点都已经输出,就跳出函数,不再继续进行下去,节省一点时间。下面是代码#include<iostream>#include<string>...
2011-08-05 20:40:00 532
邻接矩阵存储图的两种遍历方式
下面是用邻接矩阵存储一个无向图的深度优先遍历和广度优先遍历代码,深度优先遍历就是树的先根遍历的一种推广,而广度优先也是和树的层次遍历相似的,用邻接矩阵存储,进行这两种遍历的实现,是比较容易的。因为用了自己写的循环队列的模版,所以代码看起来有点冗长.#include<iostream>#include<string>using namespace std;//...
2011-08-05 17:20:00 356
赵老师说
赵老师说赵老师准备了要问的问题,是个好模板,留了一些空。赵老师说:软件工程缺乏机械工程的成熟符号体系。赵老师说:小鬼子的方法,你粗一看挺笨,但是看到了最后,反倒是最笨的方法是最好使的。赵老师说:用的成员中,啥也不会的也能用,给出模板,告诉如何把文字转换成代码赵老师说:小组内的初学者之间会相互交流赵老师说:不会编码的也可以用,需要人做PPT,需要人画流程图赵老师说:最怕会半截的,遇到困难他会...
2011-08-05 16:48:00 82
图的几种存储方式
之前几天把数据结构扔在一边,在看离散数学的图论部分,看了大部分,最后还是觉得纯数学的,有一些可能现在我刚接触图还不会觉得有什么用,所以就选择性的跳过一些,现在也决定先放下书,回到数据结构上,开始图的部分的学习。图的存储通用的存储方式有邻接矩阵表示法、邻接表表示法。为方便有向图的顶点的入度与出度的计算,有 有向图的十字链表表示法。为方便对无向图的边进行操作,有 无向图的邻接多重表表示法。邻接...
2011-08-05 00:03:00 322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人