上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 总结:提高程序时间效率的方法之一:以空间开销换时间面试官的痛点在第二层次:1、第一层次,有扎实的基础知识和编程能力,能有相关的分析方法和调试能力,解决问题。2、第二成次,能否更进一步思考,更巧妙和让人眼睛一亮的解决方法,优化时间效率或者空间效率,代码是否写的更加简单高效。这个题目更进一步的思考:在于分析出只要找s2是否是s1s1的字串,用标准库函数 :strstr问题:在linux下成char *src会出现strlen失效,运行的时候出现段错误??#include #include #include #include //提高时间效率的方法之一:采用空间换时间法//为什么写成指针会出现段错误 阅读全文
posted @ 2013-07-29 17:19 李VS超 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 字符处理字符分类函数Ps:返回值int非零数为真。#include 函数声明解释Int isalnum(int c);是否为数字或字母【1..a..A..】Int isalpha(int c);是否为字母【a..A..】Int iscntrl(int c);是否为控制字符【ASCII 0-31】 Int islower(int c); 是否为小写字母【你懂得】 Int issupper(int c); 是否为大写字母【你也懂得】 Int isdigit(int c); 是否为10个十进制数字之一【1..】 Int ... 阅读全文
posted @ 2013-07-29 16:00 李VS超 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 对于一个字节的无符号整形变量,求其二进制数中1的个数,要求算法的执行效率尽量高。解法一:求余法每次将该数字除以2,根据求的的余数判断这个位置是不是1.这样的代码不够简单。解法二:使用位操作实现解法一的算法解法三:使用与操作解法四:穷举法,将0到256这个数的各个位的1的个数存储在一个数组中,调用的时候直接返回这个个数。只需O(1)的时间复杂度。代码如下:#include using namespace std;//全局变量数组int countTable[256]={0, 1, 1, 2, 1, 2, 2,3, 1, 2, 2, 3, 2, 3,3, 4, 1, 2, 2, 3, 2,3, 3 阅读全文
posted @ 2013-07-29 14:47 李VS超 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 如何找到这个问题的最优解呢?每次都把当前最大的和上面的馅饼一起翻转,这样最多需要翻转2(n-1)次即可完成馅饼的翻转。如果馅饼中有好几个不同的部分已经相对有序,每次翻转时,把两个本来应该相邻的烙饼尽可能的换到一起。此问题本质上是对剪枝函数进行修改:设定上界和下届。代码如下:#ifndef XINBINGSORT_H_INCLUDED#define XINBINGSORT_H_INCLUDED#include#include//烙饼排序实现class CPrefixSorting{public: CPrefixSorting() { m_nCakeCnt=0; ... 阅读全文
posted @ 2013-07-27 19:57 李VS超 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 由于需要开发一个简单的编译器,所以需要练习linux下C++程序的开发方法makefile的写法。先写三个简单的文件:hello.h#ifndef Hello_H#define Hello_Hclass Hello{public: Hello(); void Display();};#endifhello.cpp#include "Hello.h"#includeusing namespace std;Hello::Hello(){ }void Hello::Display(){ coutusing namespace std;#include "Hello.h& 阅读全文
posted @ 2013-07-25 17:31 李VS超 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 前不久,有位《编译点滴》网友询问编译器方向的参考资料。其实之前讨论过一些编译器相关的在线资料–《有写编译器的冲动?这些资料很重要》。这篇博文就来总结总结编译技术相关的各类图书资料,供各位参考。这个书列是结合本人所了解的内容整理出来的,限于能力有限,肯定还有很多疏漏,请大家指正。所列图书,有中文版本的,我会尽力给出中文版本名称。Table of Contents1 编译器整体设计与实践1.1 龙书 – 《Compilers Principles,Techniques, & Tool》1.2 虎书 – 《Modern Compiler Implementation in C》1.3 《En 阅读全文
posted @ 2013-07-24 23:03 李VS超 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 问题:输出中国象棋将帅所有合法位置,且只能用一个字节存储变量。分析:此问题的本质是搜索、剪枝,只用一个字节存储变量,意义是要进行位运算,或者用C语言中结构体变量中设定的可以使用结构体变量的低4位或者高四位。互斥的条件是:不能再同一列即可。第一步:将问题形式化,给这9个位置编号,这是重要的,类似于表征问题的解空间。第二步:用位或者结构体变量,或者直接根据数字特征来剪枝解空间。位运算中往往要用到逻辑运算来改变各个位的值。所以产生下面三种解法:#include "stdafx.h"#include//宏定义#define HALF_BITS_LENGTH 4 //记忆存储单元的一 阅读全文
posted @ 2013-07-04 10:21 李VS超 阅读(661) 评论(0) 推荐(0) 编辑
摘要: 问题的提出:写一个程序,使得CPU的占用率可以听从用户的安排,第一种情况,CPU的占用率固定在50%,第二种情况,CPU的占用率为一条直线,具体占用率用参数表示;第三种情况,CPU的占用率状态是一条正弦曲线。分析:这个问题,不了解操作系统原理和内核代码的人看起来很玄乎。但此问题的本质是操作系统原理,即操作系统如何分配资源给用户程序。进而分析到应用程序级别可得,CPU忙的时间和CPU休眠的时间相等时,根据刷新出来的图像便保持在50%左右。写应用程序,会用到Windows的API。思路一:根据CPU的主频,计算每秒钟执行的指令条数,将循环用汇编代码表示,求得需要循环执行的次数。并且休眠同样的时间。 阅读全文
posted @ 2013-07-03 14:59 李VS超 阅读(1994) 评论(0) 推荐(0) 编辑
摘要: 比较算法的性能的时候,我们使用输入数据的规模N来评价算法的性能。计算算法执行花费的时间。性能评价的另一种方法考虑耗费多少内存或者存储空间。算法分类:(按照效率降序排列)1、常数级原生操作都是常数级。2、对数级典型的问题,如猜数字,二分法。3、次线性级多维kd树,它能够有效的划分n个多维点。4、线性级一层循环,一般是这个算法复杂度。5、nlogn级分治递归算法的时间复杂度,递归的时间复杂度加上,合并解的过程。6、平方级两层循环一般是这个复杂度。7、指数级欧几里得GCD算法。8、NP问题。不能用多项式时间解决的问题。 阅读全文
posted @ 2013-06-18 18:42 李VS超 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 保证一个类只有一个实例,并提供一个访问它的全局访问点。类图:代码:template<typename T>class Singleton{public: //缺少访问控制 static T* Instance() { if(single==NULL) { single=new T(); } return single; }private: static T* single; Singleton();};template<typename T>T* Singleton<T>::single=NULL;class Graduate{public: void pr 阅读全文
posted @ 2013-06-12 16:34 李VS超 阅读(147) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页