- 博客(59)
- 资源 (26)
- 收藏
- 关注
原创 用两个整数来模拟浮点数运算
一个做底数,一个做指数,实现加减乘除运算。注意精度,已经数为0的情况。#include #include #include using namespace std;/* int 型是4个字节 取值访问为 -2147483648 ~ 2147483647 对于10进制数来说,有9位的精度*/double pow10(int exp) //10
2012-09-30 18:39:07 5126 3
转载 八数码问题
http://www.dakaren.com/blog/post/3.html八数码问题一.八数码问题八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。所谓
2012-09-30 17:23:52 33204 1
转载 IP地址分类
IP地址分类以及C类IP地址的子网划分国际规定:把所有的IP地址划分为 A,B,C,D,E A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。因此A类地址的范围其实是从1-126之间。 如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。转换为2进制来说,一个A类IP
2012-09-30 00:24:48 1715
原创 生成字符串的全排列
问题:生成字符串的全排列,例如:abcabc,bca,cba,bac,acb,cab要考虑有重复元素的情况如:aabaab,baa, aba思路:这是一个组合问题,使用回溯法在解空间中遍历。注意两个问题:1,每一轮递归决定排列中的一位,该位可取字符串中所有字符的种类;2,对于深度不为1的递归,可选择的一定不能是之前选过的了,所以之前访问过的结点应该做
2012-09-29 23:53:40 1421
转载 各种字符串Hash函数比较
http://www.byvoid.com/blog/string-hash-compare/常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHa
2012-09-29 22:34:25 828
转载 hdu 2846 【字典树】单词子串的匹配数
http://acm.hdu.edu.cn/showproblem.php?pid=2846* 求前缀所能匹配的单词的个数,可以是匹配单词的任意子串* abcd 和这个串匹配的可以是 a,b,c,d,ab,cd,bcd。。。* 所以可以将一个串拆成多个串的分割进行插入:abcd,bcd,cd,d* 由于abab,和其子串ab会产生重复的计数,所以应该做标记,**/#include#
2012-09-29 22:10:12 1162
转载 Windows内存管理
本文主要内容:1.基本概念:物理内存、虚拟内存;物理地址、虚拟地址、逻辑地址;页目录,页表2.Windows内存管理3.CPU段式内存管理4.CPU页式内存管理 一、基本概念1. 两个内存概念物理内存:人尽皆知,就是插在主板上的内存条。他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外)。但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存
2012-09-28 23:14:06 1062
转载 BFS,dijkstra算法
http://ac.jobdu.com/problem.php?pid=1008题目描述:给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入:输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数
2012-09-28 22:53:42 2442
转载 priority_queue & 结构体||类 & 自定义比较函数cmp
http://blog.csdn.net/hongxdong/article/details/5559046大部分内容来自某STL语法详解文档,贴出来应该没问题吧~~1.先给一个简单应用的例子,这个和容器的用法差不多。#include #include using namespace std; int main(){ priority_queue q;
2012-09-28 20:57:14 22277 3
转载 STL之优先队列
STL之优先队列原本以为priority_queue很简单,才知道原来懂的只是最简单的形式。头文件:#include优先队列,也就是原来我们学过的堆,按照自己定义的优先级出队时。默认情况下底层是以Vector实现的heap。既然是队列,也就只有入队、出队、判空、大小的操作,并不具备查找功能。函数列表:empty() 如果优先队列为空,则返回真 p
2012-09-28 18:49:43 1136
转载 中介者模式
Mediator中介者模式:中介模式封装一系列的对象交互,集中管理相关对象之间复杂的沟通和交互。中介者使各对象不需要明显的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。 实现:Mediator:定义一个接口用于和各Colleagu
2012-09-28 00:09:02 730
转载 外观模式
外观模式外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 要点:1. 外观模式为复杂子系统提供了一个简单接口,并不为子系统添加新的功能和行为。2. 外观模式实现了子系统与客户之间的松耦合关系。3. 外观模式没有封装子系统的类,只是提供了简单的接口。如果应用需要,它并不限制客户使用子系统类。因此可
2012-09-28 00:03:46 770
转载 装饰者模式
作用:可以给一个对象添加职责,可以用来扩展,比继承更有弹性。装饰者模式Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 设计原则:1. 多
2012-09-27 23:56:47 970
原创 创新工场笔试题2013年校园招聘
时间:2012年9月27日 地点:鼎好大厦10层考试时长:1小时一, 选择题1,求z的结果#define N 3#define Y(n) ((N+1)*n)z = 2*(N+Y(5+1));解答:482,有关多线程,多进程的描述错误的是A, 子进程获得父进程的数据空间,堆和栈的复制品B, 线程可以与同进程的其
2012-09-27 21:18:37 9472 20
转载 锦标赛排序和堆排序
1964年,堆排序被提出,它改善了锦标赛排序的种种缺点。 锦标赛排序: 锦标赛排序,也称为树形选择排序(Tree Selection Sort),是一种按照锦标赛的思想进行选择排序的方法。 首先对n个记录进行两两比较,然后优胜者之间再进行两两比较,如此重复,直至选出最小关键字的记录为止。这个过程可 以用一棵有n个叶子结点的完全二叉树表示。根节点中的关键字即为叶子结点中的最小关
2012-09-26 16:45:20 2136
原创 百度2013年校园招聘题
第一题,基础题:1. 数据库及线程产生死锁的原理和必要条件,如何避免死锁。2. 列举面向对象程序设计的三个要素和五项基本原则。解答:封装,继承,多态面向对象的五大基本原则单一职责原则(SRP)开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP)单一职责原则(SRP)3.Windows内存管理的方式有哪些?
2012-09-25 22:23:52 3226
转载 杨氏矩阵查找
1. 简述杨氏矩阵中,每行元素是递增的,每列元素也是递增的。即a[i][j]2. 原理从矩阵的左下角或者矩阵的右上角处开始递归运行,以左下角为例,key为要查找的值,(i,j)为当前矩阵中的位置,初始为(N-1, 0)。如果超过了矩阵范围则说明不存在这样的元素。下面, 每行元素从左到右递增,每列元素从上到下递增。例如:5 52 3 4 5 63 4 5 6 7
2012-09-25 17:00:51 3822 1
原创 C,C++表达式求值顺序 裘老的解释
核心观点:1,有顺序点的概念: 程序执行中存在一系列顺序点(时刻),语言保证一旦执行到达一个顺序点,在此之前发生的所有修改(副作用)都必须实现(必须反应到随后对同一存储位置的访问中),在此之后的所有修改都还没有发生。C/C++中顺序点有: 1>. 每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句,return语句的表达式,以及
2012-09-25 15:03:39 1335
原创 回溯法解组合问题——硬币问题
问题:1,你有(足够的)5分,2分,1分的硬币,现在要凑出来12分的结果,那么最少的硬币组合是?2,如果有5,12,7,-5,-7,-12这六个硬币。现在要你凑0-2000以内的任意数又该如何组合呢?用回溯法解组合问题。在解空间中搜索。// MoneyCount.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include
2012-09-25 12:09:51 4645
原创 12.单链表排序
思路1:将链表中的数据存入数组中,使用数组进行排序,排好后再存入链表中。当然这并不是这题所要考察的。但是在实际应用中却相当有价值。因为链表中的排序算法都比较慢,进行转存再排序也是一种很好的方法。思路2:排序算法有1, 插入排序:简单插入排序,希尔排序2, 交换排序:冒泡排序, 快速排序3, 选择排序:简单选择排序,堆排序4
2012-09-24 23:45:29 2255 1
原创 13.删除单链表中重复的元素
思路:使用哈希表。从头扫描,将出现过的节点存入哈希表中。如果元素已经在哈希表中出现过则删除,没有则存入。注意:删除时需要知道前一节点。我使用的链表中存储的是char型变量,所以哈希表即为含有256个元素的数组。如果存储的是其他数据类型,则可以使用stl中的hash_set容器。// LinkTable.cpp : 定义控制台应用程序的入口点。
2012-09-24 21:22:47 3288
原创 11.用链表模拟大整数加法运算
例如:9->9->9->NULL+ 1->NULL 1->0->0->0->NULL思路:使用递归,能够实现从前往后计算。// LinkTable.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace s
2012-09-24 20:58:31 3168
原创 10.两个单链表相交,计算相交点
思路在8中有介绍分别计算两链表的长度,为M,N。让指向长链表的指针先走,让两链表等长,再两指针一起走,第一次相遇点即为相交点。如果把相交链表变成一个环,则环的第一个结点即为相交点。// LinkTable.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace st
2012-09-24 20:03:51 2158
原创 9.判断两个单链表是否相交
只介绍O(n)算法思路1:将链表1中各结点地址存入HashTable中,再遍历链表2,如果有结点已经在HashTable中,则两链表相交。思路2:将链表1的尾结点和链表2的首结点(注意不是头结点)相连。再判断是否有环,如果有则两链表相交。思路3:(最简单的方法)判断两链表的尾结点是否为同一结点,若是,则相交。 实现部分为思路2。// Li
2012-09-24 19:50:58 1449
原创 8.判断单链表是否有环?如何找到环的“起始”点?如何知道环的长度?
判断单链表是否有环?思路:快慢指针,快指针每次走两步,慢指针每次走一步。每次判断快指针是否到头了以及快慢指针是否指向同一元素。快指针走到头了,则没有环;如果快指针和慢指针指向同一个元素,则有环。 如何找到环的起始点?思路:如果有环,则快慢指针一定相遇在环上。将环从快慢指针相遇结点剪开,则变成了两个单链表相交的问题。设两个单链表的长度分别为N,M,用两个指
2012-09-24 19:30:56 2182 1
原创 7,单链表交换任意两个元素(不包括表头)
思路:有两种情况,相邻和不相邻。首先找两个节点的前驱,可以通过前驱来判断是否相邻。相邻则改变3个结点的next指针,不相邻则改变4个结点的next指针。 注意:要判断许多出错的情况,比如,结点不在表中,结点为空,表为空等。// LinkTable.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #in
2012-09-24 18:40:48 4592
转载 TCP状态迁移图浅析
来源:http://blog.csdn.net/weiqubo/article/details/7225652一.TCP简介 TCP提供一种面向连接的,可靠的字节流服务。面对连接意味着两个使用TCP的应用,在彼此交换数据之前必须先建立一个连接。TCP通过以下方式提供可靠性: 1. 应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成
2012-09-24 12:02:49 2117
转载 TCP三次握手/四次挥手 及 状态变迁图
来源: http://blog.163.com/pandalove@126/blog/static/98003245201221441436687/【建立TCP连接】(三次握手) 由于TCP协议提供可靠的连接服务,于是采用有保障的三次握手方式来创建一个TCP连接。三次握手的具体过程如下:客户端发送一个带SYN标志的TCP报文(报文1)到服务器端,表示希望
2012-09-24 11:38:46 12405
原创 笔面试的准备工作
10月份将是面试的高峰时期,所以在那之前要复习一下以前学到的东西。这里总结一下知识的大致结构,之后不断完善。1,数据结构(这部分最基础,也是最重要的) 基本数据结构: 链表,二叉树,字符串 中级数据结构:哈希表,图,树,栈 高级数据结构:线段树,字典树,交并集 评价:基本的数据结构在面试中经常考到,需要熟练掌握,其他
2012-09-24 10:58:32 2120
转载 【转】腾讯、百度、网易游戏、华为Offer及笔经面经
转自:http://bbs.yingjiesheng.com/thread-1011893-1-1.html应届生上泡了两年,一直都是下资料,下笔试题,面试题。一直都在感谢那些默默付出的人。写这个帖子花了我两个夜晚的时间,不是为了炫耀,只是为了能给那些“迷惘”的学弟学妹,一点点建议而已。大家何必那么认真,更没必要说脏话。我不在乎你们怎么评价我。只要有人觉得帖子有用,我就欣慰了。
2012-09-24 10:05:48 10574 5
原创 5,两个不交叉的有序链表的合并
思路:比较大小,控制指针指向,如果一个链表已经结束,则把剩下的链表加上去即可。注意:要判断输入时候正确。两个链表是否为空链表等特殊情况。如果交叉了怎么办。后面会介绍。// LinkTable.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespa
2012-09-24 00:20:15 2117
原创 4,常数时间内删除单链表中某结点
问题:一个单链表,很长,遍历一遍很慢,我们仅知道一个指向某节点的指针pNode,而我们又想删除这个节点。思路:将该结点的下一个结点的内容拷贝到当前结点,然后删除下一个结点。如果该结点时最后一个结点,则必须遍历一遍单链表,找到前面一个结点,然后删掉该结点。注意:虽然最后一种情况是线性复杂度的,但是总体上来看还是常数时间的。// LinkTa
2012-09-23 23:53:52 2030 3
原创 3,找出单链表的中间元素
问题:找出单链表的中间元素思路:快慢指针。快指针每次走两步,慢指针每次走1步。快指针走到头时,慢指针所指即为中间结点。如果结点个数N为偶数,则中间结点为第N/2个结点。// LinkTable.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespac
2012-09-23 23:28:50 1595
原创 2,找出单链表的倒数第4个元素
注意:无论采用什么思路,编程时都要考虑,链表结点个数不足4个的情况。思路1:先找到最后一个元素,然后再从头扫描一遍,判断该元素的之后的第三个结点是否是最后一个结点。O(4n)=O(n)。比较粗糙的方法。思路2:快慢指针。先让快指针先走4步,找到第四个结点。然后让快慢指针同时走,每次一步。当快指针走到最后一个结点时,慢指针指向倒数第4个元素。思路3:
2012-09-23 23:14:46 1521
原创 1,单链表反转
题目:顾名思义,就是反转一个单链表。 思路1:重新开辟内存,简历一个新链表,然后从后面往前面复制。由于单链表无法很容易得到当前节点前面的节点,所以,复制每一个节点都得从前往后找到该节点,单个节点复制的时间复杂度为O(n),整个复杂度则为O(n^2),空间复杂度为O(n)。不可取。 思路2:不开辟新内存,采用交换节点内容的方式。前后两个指针,相互交换内容,之后
2012-09-23 22:36:40 1874
原创 链表题目汇总
单链表目录1.单链表反转2.找出单链表的倒数第4个元素3.找出单链表的中间元素4.删除无头单链表的一个节点5.两个不交叉的有序链表的合并6.有个二级单链表,其中每个元素都含有一个指向一个单链表的指针。写程序把这个二级链表称一级单链表。7.单链表交换任意两个元素(不包括表头)8.判断单链表是否有环?如何找到环的“起始”点?如何知道环的长度?9.判断两个单链
2012-09-23 21:32:07 2888
原创 二叉树的三种遍历的相互转化——已知先序中序求后序
题目:已知二叉树的先序和中序遍历字符串,编程实现输出后序遍历字符串,如果没有成功输出Failed,最后分析时间和空间复杂度。题目来源:经典题目,也是网易游戏2011年游戏开发工程师的一道笔试题。分析:二叉树的题目基本上都是要用递归的,这题也一样。而递归的核心是找到结构相同的子问题。二叉树如下所示: a
2012-09-23 21:13:09 10708 1
原创 华为北京地区上机考试题2012
今天早上突然接到通知上午10在北航主楼F333参加华为上机考试,我应聘了华为的软件开发。正巧今天全国计算机等级考试也在那里举行。上机题使用了普通的在线评价系统,有点像ZOJ等系统,不过题目很简单。一共两道题。1,桃7。给一个数字N,求1到N中含有以下数字的个数,数字中包含7或者能被7整除。例如: N=20, 则7,14,17三个数满足要求,则输出3.解答
2012-09-23 20:21:26 1468
原创 待解决的面试题
hulu:1、两个有序链表的合并。看过这个题,考虑下边界问题,可以用O(n)时间,O(1)空间解决。写完后,说我代码有个小bug,然后讨论后改之。问这个算法在哪种条件下不work,想了许久,突然灵光一现,想出可能链表有环或者两个链表有可能有公共节点。他很开心,说很久没有人能同时想出两个case了。2、字符串A和字符串B。是否B包含了A所有的字符串,要考虑字符的个数问题,比如
2012-09-18 09:28:39 930
转载 百度面试题
1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(
2012-09-05 18:34:43 864
JDK8(MAC) 官网下载太慢了 jdk-8u201-macosx-x64.dmg.zip
2020-08-11
windows驱动开发技术详解-part2
2013-07-06
Windows驱动开发技术详解的光盘-part1
2013-07-06
C#调用C++DLL程序与工具
2013-05-16
Windows API —函数、接口、编程实例
2013-01-12
Windows程序设计+第五版(珍藏版).part1
2012-12-24
Windows程序设计+第五版(珍藏版).part2
2012-12-24
Windows程序设计+第五版(珍藏版).part3
2012-12-24
Windows程序设计+第五版(珍藏版).part4
2012-12-23
Windows程序设计+第五版(珍藏版).part5
2012-12-21
VC++动态链接库DLL编程详细教程
2012-12-16
COM编程精彩实例+光盘(源代码)
2012-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人