- 博客(59)
- 资源 (1)
- 收藏
- 关注
原创 三个水杯盛两个4L水
现在有三个杯子并且没有刻度,分别是8L,5L和3L。如何不借助其他工具使得8L和5L的杯子都盛4L的水。 将8L盛4L比较简单,用5L和3L的制造两个2L就可以了。之后8L的杯子就不能再动了。使用5L和3L的制造4L的关键就是制造出一个1L的就可以了,1=5-4,但是这样不可行,要制造的就是4,1=3-2=6-5;这样问题就迎刃而解了,可以在3L的杯子中剩下1L倒入5L的之后再倒入4L就可
2012-05-30 09:35:21 2413
原创 小明一家过河
有一家人想要渡河,小明过河需要1秒,爸爸需要3秒,妈妈需要6秒,奶奶需要8秒,爷爷需要12秒,船一次只能承载2人,过河时时间算做是用时做多的那个人,渡河过程中规定时30秒,不能多也不能少这家人应怎样渡 小明和爸爸先过去3秒,小明回来1秒,爷爷奶奶一起过去12秒,爸爸回来3秒,小明和妈妈过去6秒,小明回来1秒,小明和爸爸过去3秒。 3+1+12+3+6+1+3=29秒 还多一秒。后来想想
2012-05-30 09:28:17 5811 1
原创 牛奶杯和水杯
有两个大小完全相同的杯子,一个里面装牛奶,另一个里面装相同体积的水。现在从牛奶杯中舀出一勺到水杯中,搅拌均匀后再从水杯中舀出一勺到牛奶杯中。问现在是牛奶杯中含有的水多还是水杯中含有的牛奶多,还是两者一样多。1. 开始想到的是用公式推算,当然也能得出正确结果2. 这个问题其实考的是一种思维方式,一种思路。其实从牛奶杯中少的牛奶和从水杯中少的水是一样多的,而且从水杯中少的水
2012-05-30 09:27:47 1916
原创 冒烟测试、阿尔法测试、贝塔测试和性能测试
“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程。冒烟测试(smoke test)在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。 冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确
2012-05-30 09:10:33 14753
原创 将数字字符串格式转换为原来字符串中出现的字符+该字符连续出现的次数的字符串P231
#include #include using namespace std;//将数字字符串格式转换为原来字符串中出现的字符+该字符连续出现的次数的字符串P231string func(string str){ //string strChar; //string strNum; string ret; int len=str.length(); for (int i=0;i<l
2012-05-29 10:53:56 2158
原创 f(n)是统计从1到n出现的1的次数的总和,输出从1到4000000000的所有f(n)=n的n的值P229
#include #include using namespace std;//f(n)是统计从1到n出现的1的次数的总和,输出从1到4000000000的所有f(n)=n的n的值//计算一个数字中1出现的个数int count1(int num){ int res=0; while (num) { if(num%10==1) res++; num=num/10;
2012-05-29 10:12:47 2275 2
原创 将一句话里的单词进行倒置,标点符号不倒换P228
#include #include using namespace std;//将一句话里的单词进行倒置,标点符号不倒换P228void rever(char *str){ int j=strlen(str)-1; int i=0; while (i<j) { char tmp=str[i]; str[i]=str[j]; str[j]=tmp; i++; j-
2012-05-29 09:38:12 2946
原创 c语言实现strstr
#include #include using namespace std;//c语言实现strstrconst char* isSub(const char* str, const char *subs){ //特殊情况 if(!*subs) return str; const char* tmp=str; while (*tmp!='\0') { //用于每次将父
2012-05-28 22:26:33 3252
原创 输入一行字符串,找出其中的相同且长度最长的字符串P227
#include #include using namespace std;//输入一行字符串,找出其中的相同且长度最长的字符串P227pair fun(string s){ string str=s; string tem; int maxlen=0; pair res; //双重循环+长度判断取出字符串的所有子串 for (int i=str.length()-1;i>0;
2012-05-28 21:22:10 2914
转载 使用循环单链表解决约瑟夫环问题
#include #include #include using namespace std;typedef struct LNode{ int data; struct LNode* link;}LNode,*LinkList;void JOSEPHUS(int n,int k,int m){//n为总人数,k为第一个开始报数的人,m为出列者报的数 LinkList p,r,
2012-05-23 22:13:58 4176
原创 虚函数表指针、虚基类表指针
虚函数表指针、虚基类表指针对于虚函数表指针和虚基类表指针:当单继承且非虚继承时:每个含有虚函数的表只有一个虚函数表,所以只需要一个虚表指针即可;当多继承且非虚继承时:一个子类有几个父类则会有几个虚函数表,所以就有和父类个数相同的虚表指针来标识;总之,当时非虚继承时,不需要额外增加虚函数表指针。 当虚继承时:无论是单虚继承还是多虚继承,需要有一个虚基类表来记录虚继承关系,所以
2012-05-23 10:39:14 9908 4
原创 类的初始化顺序实例
#include using namespace std;class A{public: A(int a){ cout << a << "...." << endl; }};class B:virtual public A{public: B(int a,int b,int c):aa(b),A(a){ cout << c << "..." <<
2012-05-22 16:33:46 815
原创 虚函数调用,虚继承时候vtable特殊情况
#include using namespace std;class A{public: virtual void func(){ cout << "A..." << endl; }};class B:public A{public: virtual void func(){ cout << "B..." << endl; } virtu
2012-05-22 16:26:26 800
转载 把一个连续数序列打乱判断少了那些数
http://hxraid.iteye.com/blog/618153. 问题:100个连续的数打乱之后,随机取出1个数,问如何最快速的判断出少了哪一个?分析:对于所有100个连续的数,只要除余100。一定在0~99之间。一般来说,比较常规的做法就是先排序(利用Hash表定位),在循环查找。当然时间复杂度是O(2n)。现在介绍一种很牛的O(n)做法:求二进制异或运算。异或运
2012-05-21 15:31:47 1794
原创 取石子儿和拿扑克牌问题
Tang和Jiang非常喜欢玩一种有趣的小游戏:有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。最后一个取石子的人获胜,第一次总是Tang取.当然,他们俩都足够聪明,总会采取最优的策略。算法思想(使用递归):当剩余为1、3、4的时候先手者必胜;如果当前数目不是这三个数字,则递归采用去1或3或4,只要其中有一种方式使得剩下的字儿使对方输,则先手者必胜;否则后
2012-05-21 10:52:53 1763
转载 关于寻找中位数
http://lu007heng.iteye.com/blog/942722今天无意中看到一篇关于快速排序的文章。毫无疑问,快速排序正如他的名字一样,如果不是一些特殊情况(基本有序了,排序项目个数较少),他一般是最快的排序。但是,在快速排序中一般会有一个第一步选取切分值的过程。在快速排序中,这个值我们一般是随机抽取的,或者直接选取最右端或左端的数。但是,快速排序的一个变种是第一步选取这个值为中
2012-05-20 23:00:38 1149 1
转载 快速查找未知长度单链表的中间节点
快速查找未知长度单链表的中间节点http://hxraid.iteye.com/blog/662383普通的方法很简单,首先遍历一遍单链表以确定单链表的长度L。然后再次从头节点出发循环L/2次找到单链表的中间节点。算法复杂度为O(L+L/2)=O(3L/2)。能否再优化一下这个时间复杂度呢?有一个很巧妙的方法:设置两个指针* fast、*slow都指向单链表的头节点。其中* fast的
2012-05-20 22:57:52 2299
转载 10G个整数的文件中寻找中位数
10G个整数的文件中寻找中位数http://hxraid.iteye.com/blog/649831题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。分析:既然要找中位数,很简单就是排序的想法。那么基于字节的桶排序是一个可行的方法(请见
2012-05-20 22:54:34 1205
转载 一个不错的讲解基础数据结构和算法的博客
http://hxraid.iteye.com/category/837021. 链表中存在环问题2. 元素选择问题(利用快排中划分的思想)3. 串和序列处理:最长平台问题4. 基数排序5. 内部排序总结6. 归并排序7. 选择排序8. 交换排序9. 插入排序10.LIS最长递增子序列11.LCS最长公共子序列12
2012-05-20 22:52:37 1499 1
转载 基数排序
基数排序http://hxraid.iteye.com/blog/648532《桶排序》中我们能够看到,数据值的范围越大,可能需要桶的个数也就越多,空间代价也就越高。对于上亿单位的关键字,桶排序是很不实用的。基数排序是对桶排序的一种改进,这种改进是让“桶排序”适合于更大的元素值集合的情况,而不是提高性能。多关键字排序问题(类似于字典序):我们先看看扑克牌的例子。一张牌有两个关键字组
2012-05-20 22:45:08 565
转载 桶排序
桶排序:http://hxraid.iteye.com/blog/647759从《基于比较的排序结构总结 》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设,来避免绝大多数的“比较”操作。桶排序就是这样的原理。桶排序的
2012-05-20 22:35:47 718
转载 寻找一个序列中的主元素
http://yilee.info/major-element-algorithm.htmlhttp://www.cnblogs.com/ly772696417/archive/2012/03/22/2410921.html何谓主元素?具体讲,如果一个数组A[1..n]中超过半数的元素都相同时,该数组被称为含有一个主元素。 (a) 设计一个有效算法,确定该数组中是否含有一个主元素,如果
2012-05-20 22:11:33 6888 1
转载 布尔变量问题
布尔变量问题http://coolshell.cn/articles/2514.html“如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true”,于是LZ做了下面的这样的程序:booleanatLeastTwo(booleana, booleanb, booleanc) { if((a && b) || (b && c) || (a&& c)) {
2012-05-20 21:26:52 750
转载 赛马问题
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马。http://hxraid.iteye.com/blog/662643http://www.bcwhy.com/thread-11411-1-1.htmlhttp://blog.csdn.net/d
2012-05-19 16:27:32 4424 1
转载 两个程序块在不同情况下哪个更快
http://coolshell.cn/articles/4162.html有两个相同功能代码如下,请在在A,B,C是什么的情况下,请给出三个原因case 1比case 2快,还有三个原因case 2会比case 1要执行的快。(不考虑编译器优化)case1:for(i=0;iN;++i){ a; b; c;}case2:for(i=0;i
2012-05-19 10:23:05 880
转载 “火柴棍式”程序员面试题
http://coolshell.cn/articles/3961.html有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的
2012-05-19 10:21:38 798
转载 会编程的煤老板
会编程的煤老板你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?http://blog.csdn.net/yinghuashihun/article/details/6864
2012-05-19 10:19:58 2076
原创 C++虚函数表和虚函数调用机制、同名非虚函数调用机制
#include using namespace std;class Base{public: virtual void f(int a){ cout << "Base::f(int )" << endl; } virtual void g(){ cout << "Base::g()" << endl; } virtual void h(){ cout << "Base::h()"
2012-05-18 14:36:35 3963
转载 C++异常对象传递的时候,使用普通对象还是指针还是引用(使用引用)
C++异常对象传递的时候,使用普通对象还是指针还是引用(使用引用)普通对象可能切片;指针依赖于程序员能力,需要在catch块中进行处理,可能内存泄露。具体解释在:http://www.gzu521.com/campus/article/it/200608/94533.htm
2012-05-17 22:46:19 1573
转载 如何选择使用多进程还是多线程
如何选择使用多进程还是多线程http://blog.csdn.net/shiqz/article/details/5862911经典的一句话:“进程是资源分配的最小单位,线程是CPU调度的最小单位”多线程的优点:a 数据共享方便(不需要进程间的通信)b 占用系统内存小 c 提高cpu利用率多线程的缺点:a 调试困难 b 防止读写竞争,锁机制 c 编程复杂多进程的优点:a.
2012-05-17 22:45:05 1275
转载 TCP/IP的三次握手和四次分手以及超时机制
TCP/IP的三次握手和四次分手以及超时机制http://blog.csdn.net/bihailan123/article/details/7031463http://blog.csdn.net/whuslei/article/details/6667471 http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html
2012-05-17 22:41:21 4265
原创 软件工程开发模型以及在软件工程中的作用
软件工程开发模型以及在软件工程中的作用:传统模型:瀑布模型(water fall model):规定了各项软件工程活动,包括制定开发计划、需求分析说明、软件设计、程序编码、测试和运行维护,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级落下。它具有以下特征:1. 从上一项活动接受本项活动的工作对象作为输入2. 利用这一输入实施本项活动应完成的工作3.
2012-05-17 20:38:55 12672 2
转载 并查集
并查集http://dongxicheng.org/structure/union-find-set/并查集的基本操作为:A. 合并两个不同的集合B. 判断两个元素是否属于同一个集合a. 合并两个不相交集合b. 判断两个元素是否属于同一个集合使用并查集可以:1. 判断一个元素是否属于一个集合2. 把两个相交集合去重之后合并,直接使用union_set
2012-05-17 16:50:57 798
转载 Malloc/new和delete/free的区别(百度2012实习生招聘)
Malloc/new和delete/free的区别http://blog.csdn.net/hackbuteer1/article/details/6789164http://blog.csdn.net/hackbuteer1/article/details/7542774相同点:都可用于申请动态内存和释放内存本质区别:malloc/free是C/C++语言的标准库函数,new/d
2012-05-17 14:59:43 1143
原创 B(B-)树、B+树、字典(trie)树、外部多路归并排序、败者树外部排序
B(B-)树、B+树、字典(trie)树、外部多路归并排序B树和B-树http://blog.csdn.net/gukesdo/article/details/7439865 从B树(也就是中文译的B-树)到B+、B*树再到R树http://blog.csdn.net/v_JULY_v/article/details/6530142 trie树http://www.
2012-05-17 14:24:41 2990
原创 数组和指针小结
//数组和指针小结#include using namespace std;//小结://1. 对于静态n维数组而言,标识符代表的总是一个一维数组的地址,这个一维数组的每个// 元素就是一个n-1维数组,依次类推;//2. 如果标识符是a,则*a,a,&a的值是相同的(这个很特殊),但是其代表的意义是不同的//3. 字符数组或者字符串常量的指针是特殊的,直接打印的时
2012-05-17 10:23:46 629
转载 多线程和八大排序三大查找
程序员必知的八大排序和三大查找http://blog.csdn.net/shan9liang/article/details/7533466http://blog.csdn.net/shan9liang/article/details/7540928http://blog.csdn.net/shan9liang/article/details/7555811 秒杀多线程面试题系
2012-05-16 16:11:20 2742
转载 海量数据处理
海量数据处理http://blog.csdn.net/v_JULY_v/article/category/1106578http://blog.csdn.net/v_july_v/article/details/7382693#http://blog.csdn.net/v_july_v/article/details/6685962处理海量数据时候常用的方法,因为在处理海量数据的时
2012-05-16 15:39:03 3096
原创 测试流程、测试理论、测试用例设计方法
测试流程、测试理论、测试用例设计方法单元测试---集成测试---确认测试(准则就是需求说明书是否严格符合)---系统测试(恢复测试、安全测试、强度测试、容量测试、性能测试、阿尔法和贝塔测试、安装测试和可用性测试);回归测试可能存在于每个测试环节中。黑盒测试又称功能测试、数据驱动测试或者基于规格说明的测试;白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。在进行单元测试的时候大都采用白盒测
2012-05-15 22:39:22 3455
原创 虚拟机安装和设置
开始安装的时候没有选择“Iwill install operation system later”,总是自动安装;在虚拟机安装成功之后可以通过右键—setting来设置虚拟机。通过hardware选项卡设置虚拟机的CD/DVD可以来使用ISO文件安装操作系统,通过设置网络适配器为桥接来使用独立IP和外部进行通信;通过Option选项卡设置shared folders和宿主机共享文件夹,通过设置
2012-05-15 21:26:50 620
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人