-
算法特点
- 输入
- 输出
- 确定性
- 有限性
-
算法的复杂度
-
时间复杂度
- 与问题的规模
- 问题的输入
- 算法本身有关
-
空间复杂度
- 同上
-
一般是衡量时间的复杂度
- 用O()来表示
- 时间复杂度不要求精确
- 在给定的问题的规模足够的大的情况下,我们只取高阶的项作为时间复杂度,求极限会发现,原来的复杂度逼近高阶函数的复杂度
- 进一步我们对待所有的运算都看做是1时间复杂度
-
递归与分治
- 先分治再递归
-
算法的目的就是多做加法,少做乘法
-
大数乘法
- 将数拆分成两部分
- 乘法部分做一些技术处理
-
strassen矩阵乘法
- 也是把举证拆成4块
- 乘法部分做些技术处理
- 一个2*2的矩阵是有必要做7次乘法的
- 如果要追求更好的效率,需要拆成3*3或者5*5的矩阵
- 如何去解一个递归方程
-
Windows程序的入口是哪里?写出Windows消息机制的流程。
- Windows应用程序消息处理机制:
A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中
B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后
,应用程序可以对消息进行一些预处理。
C. 应用程序调用DispatchMessage,将消息回传给操作系统。
D. 系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消
息进行处理。
-
算法小问题
-
如何求两个字符串的公共子串
- 用一个指针指向第一个字符串
- 比较第一个字符在下一个字符串中是否有共同的字符,若有则两个同时循环增加,直到不同为止,记录下第一相同字符的位置和长度
- 到第二个字符串遍历完,第一个串的指针向后加一,若在第二串中没有相同字符则也加一,
- 第一串循环完就结束
- 其中公共字串的首地址和长度是不断更新的,只要发现比当前字串长的,就更新
-
c++使用问题
-
如何在类中申明一个函数为回调函数
- 一个是用普通的C 函数,在类中申明为友元
- 一个是使用静态函数
- 类中的函数包含有this指针不能使用回调函数
- /以下是一个回调函数的声明
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,
LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lParam);
- 函数名就是一个地址
- 调用时在写一个函数,把回调函数的函数名写过去,函数执行完就会回调
-
补码如何计算
- 先你需要把数字化为二进制数,然后判断一下是正数还是负数,正数首位为零,负数首位为1,这是常说的称为原码的东西,正数在计算机里可以直接用原码存储,但负数存储的实际为补码,这也是为了运算简单。补码主要是将除符号位的所有位数变反,最后再加一,通过这个运算得出以上结果
-
静态与非静态的区别
-
全局的静态和非全局的静态的区别
- 静态全局函数有作用域,即为本程序,不能在其他的.c文件中使用
- 全局变量则无这个限制
-
局部变量静态和非静态的区别
- 只初始化一次
- 到程序结束时才释放
-
函数静态和非静态的区别
- 只有一份
-
kmp算法
- 当匹配的字符串不同是,回朔到前面相同的字串的后面一个字符 再开始比较,如果还不可以则回溯到要匹配的串的开始bijiao
-
b-树
- 子主题 1
-
emc笔试
- 斐波那契数列的第40像比第三十九项是多少
-
在二叉树中找任意两个节点的公共父节点
- 找父节点
- 找到一个节点,标记出他所有的父节点
- 宁一个节点找父节点,找到第一个有标记的停止