随笔分类 - C++
摘要:题目说明: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,失败返回-1。 题目解析: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值...
阅读全文
摘要:题目说明: 归并排序是建立在归并操作上的一种有效的排序算法。该算法也是采用分治法(Divide and Conquer)的一个非常典型的应用。算法复杂度为O(N*logN)。 题目解析: 归并排序是利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列。 归并排序包括两个步骤: 1)划分子表 2)合并半子表 ...
阅读全文
摘要:题目说明: 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。排序n 个项目要Ο(n log n)次比较。 题目解析: 1、堆 堆实际上是一棵完全二叉树,在第一个元素的索引为0的情形中满足特性: 性质一:索引为i的左孩子的索引是 (2*i+1);性质二:索引为i的左孩子的索引是 (2*i+2);性质三:索引为i的父结点的索引是 int((i-...
阅读全文
摘要:题目说明: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 题目解析: 快速排序使用分治法(Divide and conquer)策略来把一...
阅读全文
摘要:题目说明: 现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。 题目解析: 单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(decision tree),使用分析与树状图来协助求解。一个简单的状况是这样的,...
阅读全文
摘要:题目说明: 西洋棋中的皇后可以直线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上,1970年与1971年,E.W.Dijkstra与N.Wirth曾经用这个问题来讲解程式设计之技巧。 题目解析: 关于棋盘的问题,都可以用递回求解,然而如何减少递回的次数?在八个皇后的问题中,不必要所有的格子都检查过,例如若某列检查过,该该列的其它格子就不用再检查了,这个方...
阅读全文
摘要:在VA中修改对应的函数和文件注释,可以使用VA自动产生函数和文件头注释
阅读全文
摘要:C语言声明的有时候又些难以理解,如果不理解它的优先级规则,就经常难以分析,下面列出其规则:
阅读全文
摘要:一、 命名约定(C++) 变量使用“匈牙利式”命名约定,变量名加对应的前缀,后加上一个以大写字母开头的 “标签”。szTo、nLength、dwCount、m_nLevel、g_nIndex。 a) ...
阅读全文
摘要:让vc编译后产生经过预处理的文件,也就是展开宏的文件 设置如下: 1、打开工程属性 2、选择C++下的'预处理器' 3、设置选项'生成预处理文件'为'不带行号(/EP /P)'或'带行号(/p)' ...
阅读全文
摘要:工作中碰到需要判断一个PE文件是否是所确认的文件,而不是被替换过的。直接判断文件名的话有些不保险,别人只要修改下文件名,就可以以假乱真。因而需要判断额外的信息;由于文件有数字签名,判断数字签名因而是一个比较好的方法,但是如果只是判断数字签名是否有效也不够,别人只要用自己的证书重新签名就可以了,所以需要判断证书签名者信息。验证文件数字签名是否有效可以使用函数 WinVerifyTrust取得文件数字...
阅读全文
摘要:由于需要用到EXE文件的OriginalFilename这个值,原本微软提供了API可以取得PE文件的版本信息,通过VerQueryValue可以查询到这个值。标准的取法是:通过GetFileVersionInfoSize取得文件版本信息大小。通过GetFileVersionInfo取得文件版本信息。查找版本信息中的languages and code pages列表。根据相应language a...
阅读全文
摘要:程序在运行时,难免会有一些异常情况发生,特别是在条件不容许去挂调试器的时候,如何快速的定位错误的方法就显得很重要。日志一直都是一种很重要的定位错误的方法,出得好的日志可以方便程序员快速的定位问题所在。但日志有时也显不足:日志有时只能定位大体错误范围,却无法确认问题所在,比如程序抓到一个未知的异常。程序有时没有机会来出日志,或者能出日志的时候已经无法获得和错误相关的信息,比如程序崩溃的时候。在日志明...
阅读全文
浙公网安备 33010602011771号