- 博客(37)
- 资源 (3)
- 收藏
- 关注
原创 新浪面试:如何求解一个迷宫(回溯法)
去年师兄面试新浪,上来就是一道迷宫题,相信大家都知道用回溯法来解决,但是要在半小时内写出正确的代码对我等菜鸟来说也不容易。下面思考一下回溯法的思路://下面部分内容摘自http://fuliang.iteye.com/blog/164686,作者fuliang回溯法解题包括以下三步: 1、针对问题,定义解空间 2、确定易于搜索的解空间结构 3、以深度优先的方式搜索解空间,并
2012-07-30 13:32:57
1039
转载 外排序思路 转自维基百科
http://zh.wikipedia.org/zh/%E5%A4%96%E6%8E%92%E5%BA%8F外排序(External sorting)是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是一种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依此进行
2012-07-25 11:09:33
2447
转载 如何使用 <fstream> 类进行文件的 I/O 处理(转)
如何使用 类进行文件的 I/O 处理(转)作者:Danny Kalev编译:MTT 工作室摘要:传统的文件 I/O 库如 Unix 的 和 ,由于其程序接口的原因,在很大程度上强制程序员进行某些处理,缺乏类型安全和国际化支持。C++ 的 库则在文件的 I/O 方面提供了一个增强的、面向对象的、具有国际化意识的库。本文将介绍如何使用这个库进行文
2012-07-19 09:59:17
1955
转载 判断两个链表是否相交
法1、使用hash表或者set表时间复杂度:O(list1.length + list2.length)空间复杂度:O(list1.length)法2、将其中一个链表首尾相连,检测另一个链表是否存在环,如果存在,则两个链表相交,而检测出来的依赖环入口点即为相交的第一个点。时间复杂度:O(list1.length + list2.length)空间复杂度:O(list1.le
2012-07-13 18:46:37
882
原创 数组地址与数组名关系
#include int main() { int a[10] = {0};int (*b)[10] = &a;int** c = reinterpret_cast(&a);std::cout std::cout std::cout std::cout return 0;}这段程序的三个输出完全相同!!!int _tmain(int ar
2012-07-11 13:06:29
1080
转载 C++ 构造随机数
出处:http://www.cnblogs.com/finallyliuyu/archive/2010/10/11/1848130.html本文由青松原创并依GPL-V2及其后续版本发放,转载请注明出处且应包含本行声明。C++中常用rand()函数生成随机数,但严格意义上来讲生成的只是伪随机数(pseudo-random integral number)。生成随机数时需要我们指
2012-07-05 16:12:58
961
转载 C与C++中定义结构体的不同方式
第三篇:struct和typedef struct分三块来讲述:1 首先:在C中定义一个结构体类型要用typedef:typedef struct Student{int a;}Stu;于是在声明变量的时候就可:Stu stu1;如果没有typedef就必须用struct Student stu1;来声明这里的Stu实际上就是struct Student
2012-06-07 15:32:47
12323
转载 归并排序 大全
归并排序算法简要介绍:一、思路描述: 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回R[low..high]中。 二路归并排序的过程是: (1)把无序表中的每一个元素都看作是一个有序表,则有n个有序子表;
2012-06-06 21:48:31
1194
转载 基类的析构函数为什么是虚函数?
编译器总是根据类型来调用类成员函数。但是一个派生类的指针可以安全地转化为一个基类的指针。这样删除一个基类的指针的时候,C++不管这个指针指向一个基类对象还是一个派生类的对象,调用的都是基类的析构函数而不是派生类的。如果你依赖于派生类的析构函数的代码来释放资源,而没有重载析构函数,那么会有资源泄漏。通过基类的指针去删除派生类的对象,而基类又没有虚析构函数时,结果将是不可确定的。这意味着编译器
2012-05-15 15:15:32
2095
转载 排序算法的稳定性
快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳
2012-05-15 10:04:06
580
转载 多线程访问共享内存的不加锁实现方式
多线程访问共享内存,为了实现同步,常采用加锁的方式。那么,如何采用不加锁的方式来达到线程同步的目的呢?思路:保存两块共享内存,一块用于读操作,一块用于写操作。初始时,两块共享内存内容一致。读操作均是读取第一块共享内存的数据;写操作均是写第二块共享内存。在多个读操作一个写操作的情况下,读操作均从第一块共享内存读取,写操作修改第二块共享内存的数据。直至写操作完成,交换两块共享内存的
2012-05-11 14:07:24
1277
原创 英文字典的表示法
对于一个英文字典而言,利用合理的数据结构存储,使得查找的速度明显加快;比较常见的存储有:1 哈希表(需要空间较大)2 二叉树(完全用map或者set保存,即红黑树,需要空间较大)3 树(将单词集合看做成普通树的结构,但是用第一个孩子/下一个兄弟的表示法写成二叉树)4 trie树(trie树称为单词查找树,在单词查找方面速度很快,但是需要空间也比较大)
2012-05-11 09:52:55
911
原创 百度面试题(简单的正则匹配)
1 编写一个简单的支持正则表达式的字符串匹配函数,简单的正则表达式如下:字符 含义c 匹配字符c. 匹配任意一个字符* 若一个字符后紧跟*,则匹配0个或多个此字符函数原型如下,参数regexp
2012-05-10 11:05:10
888
转载 malloc与new
malloc和free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于m
2012-05-09 16:03:59
1060
翻译 strlen() 和sizeof()
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。注意:不包括结果的/0字符举例 char* temp="ilove" strlen(temp)结果是5,不是6!sizeof()与strlen()区别!strlen(char*)函数求的是
2012-05-09 15:45:34
806
转载 HTTP协议的主要特点
HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.无连接:无连接的
2012-05-09 15:12:16
11715
原创 09年的百度面试
一面1.网络编程经验: 如何判断一个客户端http请求已经结束?客户端程序如何判断服务端的应答是否已结束?如何处理服务器多线程?(这题可以从我自己以前的那个项目寻求结果!!!)答:首部的结束是以连续两个新行标记(\r\n)来表示的,有了首部之后: http请求参考http://blog.youkuaiyun.com/kfanning/article/details/606211
2012-05-09 10:35:40
1397
1
转载 2011-09-24百度笔试题(技术研发)
一、简答 1、系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行 (1)不考虑系统并行性,设计一个函数(Task *Ptask,int Task_num)不考虑并行度,最快的方法完成所有任务。 (2)考虑并行度,怎么设计 typedef struct{
2012-05-08 16:37:52
2241
原创 百度面试(1)
2012年投商务搜索部的面试:1 英文句子求逆序,但每个词不能逆序。C版本(只能利用数组):void reverseconvert(char *input,int length){if(length>0){char temp;//////////////////////////////////////颠倒整个数组!for(int i=length-1;
2012-05-07 10:46:44
1213
1
转载 float/double 存储问题
作者: jillzhang联系方式:jillzhang@126.com本文为原创,转载请保留出处以及作者, 谢谢 C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套
2012-04-19 10:06:53
704
转载 C/C++文件操作 (2)
ofstream fs("binary",ios::binary);//ofstream fs("character.txt");int i = 32765;fs//fs.write((char*)&i,2);fs.close();无论以二进制文件模式打开还是以文本模式打开,文件中都是保存着文本!似乎C/C++中的binary 模式不起作用!?!后来查阅资料
2012-04-17 10:43:10
1038
转载 C/C++如何传递二维数组?
用二维数组作为参数传递(用二维数组处理矩阵),但是希望接受传递二维数组参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的)。【以下转帖】----------------------------------------------------------------------------------------------但一般传递二维数组的基本规则好像是这样的:可
2012-04-15 19:33:21
46817
4
转载 C/C++ 文件操作 (1)
C文件操作文件的基本概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是指驻留在
2012-04-12 10:49:30
1452
转载 C语言中字符串操作库函数代码 转自http://blog.youkuaiyun.com/v_july_v/article/details/6417600
字符串拷贝题目描述:要求实现库函数strcpy,原型声明:extern char *strcpy(char *dest,char *src); 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 分析:如果编写一个标准str
2012-04-01 15:34:37
2025
转载 c/c++中出现的位操作符
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。 注意:负数按补码形式参加按位与运算。“与运算”的特殊用途:(1)清零。 (2)取一个数中指定位方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。例:设X=10101110, 取X的低4位,用 X & 0000 1111 = 0000 111
2012-03-29 20:13:17
1259
转载 转载:从hello world 说程序运行机制
转自 http://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html 开篇学习任何一门编程语言,都会从hello world 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的hello world。然而,对于hello world 这个简单程序的内部运行机制,我相信还有很多人都不是很清楚。h
2012-03-29 01:12:42
587
原创 大数据量处理问题的小结
大数据量处理总体思想:分而治之set(easy)------>hashset(比较常见的做法,hash分治 然后hash统计 最后合并)-------->bitmap(占用空间最少但是限制条件多, 若用trie树,速度很快但是空间占用多,有些问题的话可以使用后缀树进行优化)---------->bloom filter(会出错)
2012-03-27 22:17:25
828
转载 百度面试题Top K算法 出处:http://blog.youkuaiyun.com/v_JULY_v/article/details/6256463
作者:July、wuliming、pkuoliver 1 其实可以直接用hash-map的方法来算 http://www.360doc.com/content/11/0531/13/6890766_120702007.shtml2 或者采用trie树 http://www.cnblogs.com/cherish_yimi/archive/2009/10/12/1581666
2012-03-26 23:18:47
5344
转载 cuda4.1+vs2010配置与安装
转载:转自miaomiao8204,http://blog.youkuaiyun.com/miaomiao8204/article/details/7277354安装环境:win vista 32位 nvidia公司的显卡安装前提:visual studio 2010Visual Assist X安装步骤:1. CUDAToolkit4.1下载地址 在该地址下一次下
2012-03-12 17:56:38
1850
原创 c++中变量的作用域
全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。静态局部变量具有局部作用域,它只被初始化一次,自从第
2012-03-06 21:34:21
787
转载 c++中堆对象与栈对象
使用栈对象的意外收获 栈对象是在适当的时候创建,然后在适当的时候自动释放的,也就是栈对象有自动管理功能。那么栈对象会在什么会自动释放了?第一,在其生命期结束的时候;第二,在其所在的函数发生异常的时候。你也许说,这些都很正常啊,没什么大不了的。是的,没什么大不了的。但是只要我们再深入一点点,也许就有意外的收获了。 栈对象,自动释放时,会调用它自己的析构函数。如果我们在栈对象
2012-03-06 21:02:31
5735
转载 转自haoel http://blog.youkuaiyun.com/haoel: C++ 虚函数表解析
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重
2012-03-06 20:05:02
1053
原创 c++中对象的内存占用说明
c++对象模型中提到:需要多少内存才能够表现一个class object?一般而言要有:1 其nonstatic data members的总和大小;2 加上热河由于alignment的需求而填补上去的空间(在32位计算机上,通常alignment为4bytes(32位),使得bus的运输量达到最高效率)3 加上为了支持virtual而由内部产生的任何额外负担。举例1:clas
2012-03-06 17:19:35
758
原创 c++中数组类型和长度的简单认识
// arraytest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;template int getArrayLen(T& array){//使用模板定义一 个函数getArrayLen,该函数将返回数组array的长度coutreturn (size
2012-03-06 15:10:45
1427
翻译 C++ 类设计核查表
设计类时,下面的几点用来提醒设计者思考类是否设计的完美:1 类需要一个无参的构造函数么? 如果只定义了一个有参的构造函数,那么编译器就不会自动添加默认构造函数了,那么如果此时下面语句就是不合法的(以point类为例): point p;//不合法! 或者声明数组 point parray[100]; //不合法2 类需要析构函数么?
2012-02-18 10:11:52
917
原创 C中数组陷阱
自己总结的几点关于C中经常容易出错的数组知识点:1 声明数组后,比如 int a[3], 那么通过typeid(a)得到:a的类型为int [3].2 声明int a[3], 那么a的内涵可以理解为指向int变量的一个地址(int *),但是这个地址是不能被修改的!可以理解为a 实际是一个const int *,被隐含转为了int *======>a的类型为int [
2012-02-18 09:02:30
547
转载 利用C++中的stringstream类轻松实现字符串和数字的互相转换
c++中利用srtingstream可以将数字转为字符串,或者将字符串转为数字;首先将double型数字串转成了string:stringnum2string(double *a,int n){stringstreamss; for(int i=0;i ss return ss.str();}反过来,将string转为数字:double str
2012-02-14 21:16:13
2981
c++内存管理详细说明
2012-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人