- 博客(22)
- 收藏
- 关注
原创 字符串全排列和组合问题
字符串组合问题 编程思路: 如果字符串中有n个字符,那么一共需要输出2^n-1中组合假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。 针对第一个字符,我们有两种选择:第一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符; 第二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个
2015-09-30 18:48:20
598
原创 判断两棵二叉树是否相等
题目要求:请实现两棵二叉树树是否相等的比较,并说明算法复杂度。定义数据结构:struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right;};解题思路:A、B两棵树相等当且仅当pRoot1->value==pRoot2–>value,而且pRoot1和pRoot2的左右子树相等
2015-09-03 18:14:15
1020
原创 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-08-12 23:20:16
703
原创 面试复习重点——数据结构、操作系统、计算机网络、数据库。
必看书籍:剑指offer、程序员面试宝典来自:腾讯、搜狐、网易、烽火、百度、大众点评、美团、风行1. 死锁是什么?什么情况下产生?怎么解决?2. 设计模式(尤其是单例模式,要会写该模式的程序框架,要注意同步问题,怎么实现在要用时才创建)3. 线程的同步?为什么要同步?线程间通信方式。4. 进程与线程的区别,进程间通信方式。5. 容器类:hashmap与hasht
2015-08-11 22:10:10
12868
1
原创 设计模式之装饰者模式C++实现
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 装饰模式:动态
2015-08-05 23:06:30
554
原创 设计模式之策略模式的C++实现
策略模式(Strategy):定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。优点: 1、 简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。 2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。 3、 所以算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调
2015-08-05 22:51:58
653
原创 Windows API CreateEvent函数用法
CreateEvent是创建windows事件对象,作用主要用在判断线程退出和锁定方面.HANDLE CreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes, // SD BOOLbManualReset, // reset type BOOLbInitialState, // initial sta
2015-08-05 15:58:56
2258
转载 洗牌算法
扑克牌洗牌是我们生活中比较喜欢玩的一个游戏。那么我们有没有什么办法自己设计一个扑克牌洗牌的方法呢?在c运行库当中有一个随机函数rand,它可以生成0~32767之间的任意数。那么有没有可能利用这么一个函数对我们扑克牌进行随即洗牌呢? 在这里我抛砖引玉一下,谈一谈自己目前已经看到的两个算法。欢迎朋友们谈一谈其他的方法。 (1)全局洗牌法 步骤如下所示:
2015-08-02 21:24:28
480
转载 八皇后问题
八皇后是一道很具典型性的题目。它的基本要求是这样的:在一个8*8的矩阵上面放置8个物体,一个矩阵点只允许放置一个物体,任意两个点不能在一行上,也不能在一列上,不能在一条左斜线上,当然也不能在一条右斜线上。 初看到这道题目,大家的第一印象是遍历,但是经过实践之后发现遍历其实不好写,而且复杂度很低。不仅需要遍历8*8*8*8*8*8*8*8*8 = 2^24次数据,还要判断各种条件,实际
2015-08-02 21:17:21
429
原创 MFC CString类成员函数实现原理
在MFC框架中,CString类用的很多,它是对原来标准c中字符串类型的一种包装,因为里面有两个成员变量char* m_pData和int m_nLength来维护这个类。对于成员函数:1、几个默认的构造函数CString(); //缺省构造CString( const CString& stringSrc );//拷贝构造CString( const char* lp
2015-07-30 10:59:33
1851
原创 阿里巴巴校园招聘内推C++研发岗位电话面试
不得不说时间过的太快了,马上就到了要找工作的时候了,最近也一直在看面技术岗位的书(哎,状态还不太好,好好调整一下,相信自己!) ,同时也投了几个互联网公司的内推岗位,可惜还没有回复。这两天收到阿里巴巴电话面试,虽然被虐的不行,但自己收获挺多,顿时觉得书本上的知识真的是远远不够,在实际开发中会遇到各种各样的问题。一面:做过哪些项目,从项目中展开知识点,包括MFC消息响应机制、互斥对象、线
2015-07-30 09:48:37
1204
原创 枚举类型
枚举类型typedef double rPOSITION; enum STACK_ORDER{ X_Y_Z = 1, Y_Z_X = 2, Z_X_Y = 3}; struct m_POSITION{ rPOSITION X; rPOSITION Y; rPOSITION Z
2015-07-28 22:14:08
402
原创 设备描述表及绘图
在windows平台下,所以的图形操作都是利用DC来完成的;在相应WM_PAINT消息的代码中,要得到窗口的图形数据,必须调用BeginPaint函数。BeginPaint函数也只能在WM_PAINT消息中使用。在其他地方,只有使用GetDC来得到DC的句柄。调用ReleaseDC函数来释放DC所占用的资源,否则会引起内存泄漏。this指针:是一个隐含的指针
2015-07-28 12:39:39
563
原创 消息映射机制
MFC消息映射机制:当有消息产生时,操作系统会把这条消息放到应用程序的消息队列中,应用程序通过GetMessage函数从这个队列取出一条具体的消息,并通过DispatchMessage函数把消息交给操作系统,后者调用应用程序的窗口过程;即窗口过程函数WndProc进行处理。该函数利用switch-case结构来对消息进行判别并分类处理。在每个能接收和处理消息的
2015-07-28 12:37:34
530
原创 MFC创建线程函数及参数的使用
1、用CreateThread产生一个线程线程函数: DWORD WINAPI CEventDlg::ThreadProc2( LPVOID lpParameter // thread data )并在头文件中添加: static DW
2015-07-28 12:35:18
2246
原创 MFC如何设置拖动对话框
1、添加消息 OnNcHitTestLRESULT CNCHitTextDlg::OnNcHitTest(CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 return CDialog::OnNcHitTest(point);}2、添加一下代码 UINT nHitT
2015-07-28 12:35:05
752
原创 C++primer 函数
1、求最大公约数的函数:辗转相除法:int gcd(int v1,int v2){ while(v2) { int temp=v2; v2=v1%v2; v1=temp; } return v1;} 2.、参数传递(对实参的拷贝) 每次调用函数时,都会重新创建该
2015-07-28 12:31:49
414
原创 库函数sort与qsort的使用
总结一下sort和qsort的使用方法。首先看sort函数见下表:函数原型:template void sort(RanIt first, RanIt last);template void sort(RanIt first, RanIt last, Pred pr);函数名功能描述sort
2015-07-28 12:28:17
470
原创 STL容器适配器
首先,我们要明白适配器是干什么的?其实就是一个接口转换装置,是得我们能用特定的方法去操作一些我们本来无法操作的东西。举一个例子,比如你的一个设备支持串口线,而你的电脑支持的是usb口,这时候,我们没有必要重新买一个支持usb的设备,只需要一根串口转usb口的小玩意,让你的设备能够连接到usb插口上,而它就是适配器。那么C++中的容器适配器是干什么的呢?可以做一个类比,我们已有的容器(比如vec
2015-07-28 12:25:34
491
原创 return this与return *this
return *this和return this有什么区别? 正确答案为:return *this返回的是当前对象的克隆(当然, 这里仅考虑返回类型为A, 没有考虑返回类型为A& )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧: // ReturnThis.cpp : 定义控制台应用程序的入口点。//#i
2015-07-28 12:25:25
1286
原创 小结char* s 与char s[] 的区别
char *s1 = "hello";char s2[] = "hello"; 【区别所在】char *s1 的s1,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。char s2[]的s2 是数组对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改变
2015-07-27 12:14:48
639
原创 MFC加载位图资源的实现
MFC加载位图资源的实现1、添加OnEraseBkgnd函数该方法是在指定位置加载位图BOOL CbitmapDlg::OnEraseBkgnd(CDC* pDC){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP2);
2015-07-27 11:58:29
5253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人