自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

super_chris的专栏

to be a programmer

  • 博客(139)
  • 资源 (4)
  • 收藏
  • 关注

原创 好贴链接留存

C++iostream标准库介绍http://blog.163.com/terrcy.j@126/blog/static/4930063820079913140988/C/C++宏带来的奇技淫巧http://www.cppblog.com/kevinlynx/archive/2008/03/19/44828.html谈技术人员的研究方向http://hi.csdn.net/li

2009-12-10 19:25:00 988

原创 编程之美 寻找发帖水王 扩展问题

编程之美中的“寻找发帖水王”描述的是这么一个问题,有一个ID列表,其中有一个ID(水王的ID)出现的次数超过了一半,请找出这个ID。书中的思路是每次从列表中删除两个不同的ID,不影响“水王的ID在剩余ID中仍然超过一半”这一事实,因此每次删除两个不同的ID,直到剩下的所有ID都相同,那么剩下的就是水王的ID。具体编程的时候,使用一个candidate记录当前猜测的水王ID,一个count记

2012-01-09 15:03:56 10671 4

原创 关于矩阵的一些理解

今天拜读了孟岩老师的《理解矩阵》三篇:1 2 3 收获颇深,这里写一下自己的总结。有些内容摘抄自网上,百度百科。矩阵:描述的是一种空间中的变换,变换的对象可以是向量也可以是另一个矩阵(看与矩阵相乘的是什么了)。被变换的向量表示的是n维空间中的一个点;被变换的矩阵则表示一个坐标

2011-09-01 21:08:14 3731 1

原创 单调队列 POJ2823

看这个问题:An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the v

2011-07-08 15:10:54 1352

原创 C++的类型转换

四种显式类型转换操作符: static_cast(x) 只能进行规则允许的类型转换,所谓规则允许包括三种情况:1.语言内建(int到float,enum到int,float到int等等);2.继承体系中的向上转型,即将一个子类对象转型为基类对象;3.单参数构造函数,如果存在以T1为单参数的T2构造函数,就可以将T1转型为T2,不需要T1和T2在同一个继承体系中。 除此之外,不对参数类型做任何

2011-06-26 21:25:00 982

原创 STL理解

以下为这两天看C++ STANDARD LIBRARY的总结,都是以前不够清楚的地方: c++标准库主要包括STL,iostream,string等。 STL包括:1.容器containers,2.迭代器iterators,3.算法algorithms,4.仿函数functors,5.适配器adapters 容器包括: 1.序列容器,有vector,deque,list。其中vector为

2011-06-23 21:41:00 1401

原创 Windows和Linux下进程、线程理解

对于windows来说,进程和线程的概念都是有着明确定义的,进程的概念对应于一个程序的运行实例(instance),而线程则是程序代码执行的最小单元。也就是说windows对于进程和线程的定义是与经典OS课程中所教授的进程、线程概念相一致的。提供API,CreateThread()用于建立一个新的线程,传递线程函数的入口地址和调用参数给新建的线程,然后新线程就开始执行了。windows

2011-06-20 13:57:00 4043 1

原创 C++构造函数、析构函数、虚函数

今天看书时发现对c++虚函数、构造函数、析构函数的一些概念竟然极其不清晰。 查了一些书,总结一下。 构造函数 1.创建对象时会依次调用基类和子类的构造函数,各个构造函数负责对自己类中定义的成员的初始化工作。 2.如果用户不声明任何构造函数,编译器将提供一个缺省构造函数(default constructor),只要用户定义了自己的构造函数,不论包不包括缺省构造函数,编译器都不再提供缺省构造

2011-06-18 18:45:00 2510

原创 编程之美 3.8 求二叉树中节点的最大距离 3.9 重建二叉树

3.8 题意为:将一棵二叉树看成一个图,求树上两点之间的距离。距离定义为两点之间边的条数,如下图的二叉树中,节点8和5之间的距离为3。 3.9题意为已知二叉树的前序遍历结果和中序遍历结果,要求重建二叉树。之所以在这里说3.9,是因为解第八题的时候为了处理输入建成二叉树,实现了一个重建二叉树的函数。 代码如下(六个参数分别为前序遍历结果数组,其起点和终点;中序遍历结果数组,其起点和终点):

2011-06-11 21:13:00 1162

原创 编程之美 2.4 “1”的数目

题目是这样的:给定一个正整数N,从1到N一共出现过多少个1? 如N=12,则f(12)=5,因为1,2,3,4,5,6,7,8,9,10,11,12共出现5次“1”。 当年第一次看这个题的时候觉得无从下手,这次到迅速有了思路,还是有进步的嘛。 思路就是分别统计个位、十位、百位…上的1的数目。先考虑个位上的1的数目,个位上的1是每10个数中会出现1次的,即1-10出现一次,11-20出现一次…

2011-06-10 18:17:00 1211

原创 编程之美2.21 什么样的数不能写成连续N个自然数之和

有些数可以写成连续N(>1)个自然数之和,比如14=2+3+4+5;有些不能,比如8.那么如何判断一个数是否可以写成连续N个自然数之和呢?这是这一节的基本问题。一个数M若可以写成以a开头的连续n个自然数之和,则M=a+(a+1)+(a+2)+...+(a+n-1)=n*a+n*(n-1)/2,要求a!=0,否则就是以a+1开头的连续n-1个整数了,也就是要求(M-(n+n*(n-1)/

2011-06-09 17:09:00 2743

原创 做了个梦,吓醒了

做了个梦,梦到自己又回到了高中。梦中的时间是2010年初,然后我2011年夏天要参加高考,也就是说还有一年半高考,实际上我还有一年半找工作。梦中好像是我念到了高三又回去念高一,梦中自己算了一下从02年到那个高中11年高考,我要在那个高中呆9年,实际上我要在这个大学待7年。梦中好像有一次分班,我和一些人离开了楼上的班级来到楼下一个教室组成新班级,然后我还回到楼上的班级看了看,还打算调回去,实际上我换过专业,从电子到计算机,倒是没打算换回去。说这些是觉得做梦真的挺有意思。梦中觉得自己是做了某个选择才造成11年再

2011-03-09 09:10:00 1336

原创 catalan数

<br />算法课最后一节讲到了卡特兰数,总结和学到了很多以前不知道的东西。<br />卡特兰数的递推公式是F(n)=∑(k=1…n){F(k-1)*F(n-k)}=∑(k=0…n-1){F(k)*F(n-k-1)}<br />一般性公式为F(n)=C(2n,n)/(n+1)<br />可以描述的问题有<br />1、n个元素的二叉查找树有多少种。<br />2、n*n棋盘从左下角走到右上角而不穿过主对角线的走法。<br />3、2n个人排队买票问题,票价50,n个人拿50元,n个人拿100

2011-01-03 15:33:00 9583 5

原创 新年快乐

<br />想来想去,还是这里适合自己。<br />那些话是不想让熟人看到的,想说给自己听,可是完全没人听到又觉得有些纠结。索性写到这里。<br />2011年来到了。<br />2010年过去了。<br />总结一下,展望一下,希冀一下。<br />2010年发生的事情还挺多的。<br />3月 和前女友分手,重要性4星,评价5星。<br />4月 追某女生未遂,重要性3星,评价2星。<br />5-6月 毕设,重要性3星,评价3星。<br />7月 中国公开赛,重要性3星,评价4星。<br />7月 长

2011-01-01 12:54:00 1212

原创 理解动态规划

看了算法导论上对动态规划的讲解,觉得自己对动态规划的理解又进了一步,之前在读到《算法之道》相关章节时就有这感觉,但是仍然不敢说自己已经完全掌握了动态规划,只是比以前又透彻了一些,说说自己新的理解,其实就是复述一下算法导论上的内容而已。0.两个例子:装配线调度问题一个产品要经过N道工序,有两条装配链提供着N道工序,在任何一道工序i时产品都可以选择在两条线上的一条进行加工,在装配线1上加工工序i的时间为a[i][1],装配线2上类似。在同一条装配线上前进不花时间,跳转到另一条装配线上需要一定的时间t[1][i]

2010-12-25 15:41:00 2351 1

原创 不自量力是个恶毒的形容词,但这种心态是最不应该被嘲笑的

刚才走路的时候说到恨自己愚笨,不能理解那些数据结构当初为什么要设计成那样,而只能理解设计成那样之后有怎样好的表现。同姓的人说,我问全没有必要去想那些大师的设计初衷,并对这种探求表现出了些许不屑。我的意思是,不做这种探求使我们出于自身愚笨的一种无奈,而不是因为这没有必要,我们应该承认自己不够聪明,应该承认这世界上有些东西对我们来说很难理解。虽然这很伤害我们的感情,但比起直接将这些我们难以理解的东西归为没有必要去理解要健康得多。也许对于某些人的追求或者说对自己价值的期望来书,会认为这些理论上的东西是无必要的,但

2010-12-24 11:44:00 2555

原创 我恨自己愚笨

<br />我恨自己愚笨!<br />恨世界上有那么多知识和理论自己难于理解!不是恨这理论这知识,而是恨自己的笨!恨自己的可怜的理解力!<br />人和人之间的差距无非三点,一是道德上的,一是思想上的,一是智力上的。前两个都可以追赶可以提高,上帝造人时在这两个方面应该还是一视同仁的,但第三点,真的是很不公平!我恨自己没有那么高的智力去理解那些我想要理解的知识,恨自己没有那么高的智力去涉足自己想要涉足的问题!这种理解力不足体现在阅读后理解量少,甚至体现在对理解的抗拒。<br /> <br />以上写于阅读哥德

2010-12-23 21:54:00 1192

原创 【转】海量数据面试题整理

大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+

2010-12-23 13:31:00 1226

原创 理解B树 B+树

老杨说过树形结构是计算机系统里最重要的数据结构因为它有这很好的平衡性能,即多余多种操作都有着比较好的操作性能。因为对树的操作时间复杂度大多与树的高度有关,而树的高度又是N的对数级,因此性能很令人满意。但是有一种情况,希望树的高度比通常的以2为底的对数还要好一些才能满意,那就是对硬盘的IO。因为对硬盘的IO是一项很费时间的事情,所以在数据量大到单单内存不足以存储而不得不存放在硬盘里的时候,我们常常希望通过尽可能少的磁盘IO次数就能找到我们所要的数据,对其进行访问。这也是各大IT公司面试常常问到的问题——海量数

2010-12-23 12:40:00 4408

原创 网络最大流、二分图最大匹配、POJ2536

<br /> <br />通常我们把一个有向无环图边上的权值看做两个节点之间的距离,在这个模型下的问题有各种最短路问题。如果将边上的权值不看做距离而看做两点间的容量(比如两个城市之间一天的运输能力),这样的有向无环图就叫做流网络,对应的问题就是求最大流——单位时间内通过网络的最大容量(比如工厂所在城市一天最多可以生产多少才能全部经过一个流网络运到仓库所在城市而不造成中途的淤积)。<br />流网络只有一个源点和一个汇点。关于定义就不说了,算法导论上很清楚。有一点要说的是,如果一个流网络有多个源点和多个汇点,

2010-12-14 14:08:00 2589

原创 百度面试 在一个int数组中找这样一种数

在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。直观想法是用两个数组a、b。a[i]、b[i]分别保存从前到i的最大的数和从后到i的最小的数,这需要两次遍历,然后再遍历一次原数组,将所有data[i]>=a[i-1]&&data[i]给出这个解答后,面试官有要求只能用一个辅助数组,且只能一次遍历。想了半天没想出来,后来在面试官的提示下得出解,今天实现了一下。见代码:#include using namespace std; #define max(a,b) a>b

2010-11-23 20:47:00 3415 24

原创 百度面试题

1.一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。这道题的解答请看下一篇日志2.一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和

2010-11-23 14:39:00 3586 5

原创 二叉树先序、中序、后序遍历的非递归实现

<br /> <br />在网上看了一些用非递归实现先序中序后序遍历二叉树的代码,都很混乱,while、if各种组合嵌套使用,逻辑十分不清晰,把我也搞懵了。想了大半天,写了大半天,突然开了窍,实际上二叉树的这三种遍历在逻辑上是十分清晰的,所以才可以用递归实现的那么简洁。既然逻辑如此清晰,那么用非递归实现也应该是清晰的。<br />自认为自己的代码比网上搜到的那些都清晰得多,好理解得多。<br />稍微解释一下:<br />先序遍历。将根节点入栈,考察当前节点(即栈顶节点),先访问当前节点,然后将其出栈(已经

2010-11-23 14:34:00 1640 3

原创 EMC笔试题

<br />1.JAVA构造函数的调用顺序<br /> <br />2.<br />int **a;<br />int(*b)[];<br />int(*c)[3];<br />int d[1][2][3];<br />对于函数int func(int(*val)[3]){return 0;}<br />来说,以下哪些参数调用可以,哪些不可以?<br />a.a<br />b.b<br />c.c<br />d.d[0]<br /> <br />3.最快算Fibonacci(n)第N项的复杂度是多少?<br

2010-11-21 15:46:00 1232

原创 淘宝笔试题

<br />能记住的还是记一下吧,很多基础知识都不牢靠,以后要加油。<br />1.一个内存为4M,按半字编址,则寻址范围为____<br />2.写一个函数,判断一个单链表是否有环,有环的话返回环的入口点<br />   如何判断两个链表是否有交点<br />3.static_cast,dynamic_cast,interpxx_cast和<br />4.N个石头和N个木头,石头重量各不相同,木头也是。每一个石头都和一个木头重量相同。一个天平,一侧只能放石头,一侧只能放木头。用最少的次数将石头和木头配对。

2010-10-25 17:47:00 633

原创 那些排序算法

<br />第二次上课的作业之一是实现所有会的排序算法(之二是实现查找欧拉回路的算法),用了总计大概两天的时间写好了这九个排序算法。没有一个算法是一次通过的,都经过了调试,甚至冒泡,而且后来才发现我第一次写的冒泡程序竟然是错误的,囧。这还是第一次把这些算法全部亲手实现,收获还是很大的,真的加深了理解。期待通过这门课有效地提高自己的编程能力。废话不说,上代码。以下算法,没给出参数的默认排序范围为data[]的第0位到第N位。有些采用分治思想的算法需要范围参数,如快排和归并。为了优化,在递归过程

2010-10-19 15:51:00 637

原创 最小哈密顿回路

<br />老杨留的作业,折腾几个小时加上参考别人的终于写出来了,还是很弱啊。效率貌似还可以,强化了分支定界的条件之后计算N=20的情况只需要十几秒。好好体会一下~#include #include #include #include using namespace std;#define N 15int curLightestWeight = 1000000;int curDepth = 0;int curWeight = 0;int depth

2010-10-19 15:50:00 6582

原创 Kruskal Prim Dijkstra

<br />这三个算法每本算法书都要讲到,这次看《算法之道》又复习了一遍,觉得有些新的领悟,写个模板记录一下。Kruskal和Prim算法解决的问题都是最小生成树问题,即对于一个图G<V,E>,找到它的最小生成树T<V,E'>,其中E'包含于E,使得所有V都连通。Dijkstra算法解决的是单源多点最短路径问题,即对于一个图G<V,E>和一个起点S,为图中的其它所有节点找到距离S最近的路径。所说的图都是加权图,如果是均权图或者权重为一的图,则不存在最小生成树这一概念,因为任意一棵生成树的大小都是一致

2010-10-19 15:49:00 1265

原创 分治与递归、动态规划、贪心

<br /><br />《算法之道》提到,问题的基本求解理念有三种——分治与递归、动态规划、贪心。<br /> <br />分治与递归所能处理的问题最多,对问题的性质没有要求(不过可能会出现很复杂的分治情况),所需要求解的子问题数最多,而且如果子问题有重复,则每一次都要重复求解;<br /> <br />动态规划叫做Dynamic Programming,这里的Programming的意思不是编程而是查表,动态规划不如翻译成动态查表更容易理解些,规划这个词太空了。动态规划的思想就是发现在分治递归求解中有很多

2010-10-19 15:48:00 2001

原创 如何利用windosAPI计算程序运行时间 不使用VC的库,也就是说不跨系统,跨编译器

<br />#include <iostream>#include <windows.h>using namespace std ;int main(void){ LARGE_INTEGER BegainTime ; LARGE_INTEGER EndTime ; LARGE_INTEGER Frequency ; QueryPerformanceFrequency(&Frequency); QueryPerformanceCounter(&BegainTime)

2010-10-16 19:53:00 756

原创 recently

最近的生活从大一的时候我就有一个日记本,每当想起来我就会在上面记录一下一段时间的生活。我很喜欢这种记录的感觉,其实我更喜欢的是将来某一天拿起它回顾的感觉,看看当时的自己多2b,感受自己的成长。几乎每次拿起来看我都会觉得当初的自己2b,一段时间这让我很郁闷,让我做事很缩手缩脚,因为我不知道我要怎么做才能不让以后的自己觉得2b。思考的结果是我无法得出这个问题的解,因为在这个过程中我的价值观在变,除非我能参透我未来的价值观变化趋势,否则我是不可能迎合未来的自己的,但一旦我参透了,那就变成了我如今的价值观,未来的价

2010-08-03 20:42:00 579

原创 切意大利馅饼

一块意大利馅饼,切N刀,最多可以切成多少份?N条直线可以将一个平面分成多少个区域?1条直线 22条直线 43条直线 7这样想,第N条直线即使不与之前N-1条直线中的任何一条相交(实际上这种情况是很特殊的,要求所有N条直线都平行,这是违反切割策略的),它也切割了一个区域,而在此之外再每与一条直线相交,就多经过一个新的区域——因为所有区域都是凸的,所以一条直线只能经过一个区域至多一

2010-03-11 14:22:00 983

原创 假期记,要回家了

假期这最后的半个月过得极其失败,完全是在数日子,该深刻检讨!一年半之前我说过很羡慕的状态是“前途非常光明,道路十分曲折”,可现在我已经达到了这种状态,甚至连道路都不是很曲折了,我怎么又开始懈怠了呢!?如果让一年半之前的自己知道我现在的状态,“他”一定会很愤怒的!明天就要上车回学校了,时间真的很紧迫了,道路虽然不曲折但是很漫长,要抓紧!状态!状态!要找回来!很烦自己,很烦看不进去书时

2010-02-28 15:39:00 494

转载 【转】MFC中非模态对话框的创建与销毁

非模态对话框一般使用指针。创建:CMyDlg* pDlg = new CMyDlg;pDlg->Create(IDD_MYDLG,NULL);pDlg->ShowWindow(SW_SHOW);销毁:需要重载两个函数,然后框架自动在窗口销毁的时候调用它们,可在之中做一些工作。void CMyDlg::OnCancel(){//不能调用基类的OnCancel(),

2010-02-18 01:19:00 938

原创 显示位图(双缓存)

//在对话框中直接显示图像 BITMAP bm; CBitmap bmp;//定义CBitmap 类的对象 bmp.LoadBitmap(IDB_BMP_VV);//装入ID号为IDB_BITMAP1的位图 CDC memdc;//定义CDC类的对象 CRect rect; memdc.CreateCompatibleDC(&dc);//创建与显示DC相兼容的内存DC

2010-02-17 12:45:00 816

原创 Windows socket编程的简要步骤

《共用步骤》1.利用WSAStartup()函数加载socket库,判断返回值是否为0(为零为正确),如不是零则return,并判断WSADATA类型参数是否返回了正确的版本,若版本不对则调用WSACleanup()卸载库并return; 《基于TCP》服务器端:1.利用socket()函数创建套接字;2.利用bind()将套接字绑定到IP+端口,此为套接字等待客户端请求的

2010-02-15 16:37:00 886

原创 归并排序理解

归并排序是利用分而治之思想进行排序。具体说来是递归的思想。不断地将问题分解为较多较小的子问题,直到子问题的规模小到不需要再分解也不需要求解而是自然有解(只有一个元素,自然有序),再从底往上进行归并。归并的操作是将两路各自有序的序列合成一路有序数列,具体做法是利用游标、比较实现。void MergeSort(int a[],int n){ int *b = new in

2010-02-09 14:58:00 932

原创 Dijkstra算法详述

Dijkstra算法解决的是有向加权连通图中,单源节点到所有节点的最短路径问题。即已知一个有向加权连通图G,和该图中的源节点s,求s到其他所有节点的最短路径。由于是有向加权图,所以用邻接矩阵描述比较合适,a[n+1][n+1]用来描述该图,其中a[i][j]为i到j的目前所知的最短距离,如果没有直接路径,暂时设为NoEdge(一个很大的数)。用一个链表L(也可以是优先队列,因为每次都要

2010-02-08 20:57:00 866

原创 用MFC写了个贪吃蛇

这几天看侯SIR的《深入浅出MFC》,看完了觉得如果就这么放下可能效果不好,就做了个贪吃蛇,本来打算做另一个东西呢,结果发现现在知识储备还不够,还得看看书,再说吧!贪吃蛇实现得比较简单,SDI,单线程,没用位图,因为我没搞明白怎么编辑和使用位图,而且在网上看到一个也没用位图的贪吃蛇范例,很好看,就用简单地矩形填充做了。做的过程中遇到的问题大概记录一下:首先是定时器,贪吃蛇肯定要定时器,

2010-02-03 19:01:00 2250

原创 关于MFC的一点看法

这几天一直在学习MFC,关于MFC,其实一年前就接触过,通过孙鑫的《VC++深入详解》视频,还用MFC做了一个魔方程序,和几个简单的小程序(文件加密什么的),但以前一直处在懵懂的状态,只会用AppWizard和ClassWizard,有什么函数就往View里面塞。这次放假觉得有必要深入了解一下MFC,于是翻开侯捷的《深入浅出MFC》,看的我是大呼过瘾,确实是一本好书,让我了解了很多以前不了解的

2010-01-31 15:59:00 792

背包九讲 高清晰PDF文档

经典背包问题讲解,本人自制PDF上传。原作者DD牛。

2010-03-30

Eclipse开发平台快速入门

内含一PPT 一PDF 内容全面 繁体中文

2009-09-20

The C Programming Language英文版电子书PDF格式

很好的电子书 清晰英文版 TCPL 宝典级

2009-09-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除