- 博客(334)
- 资源 (1)
- 收藏
- 关注
原创 c语言宏使用的注意事项
//注意宏展开后就是一行字符串,其中的注释千万不能使用//,这样就会把后面的宏全部注释//而是要必须使用/*comment*/来解决//并且不能像函数那样使用,因为这只是一个字符串而已#define func(x) \ if(x<10){ \ x=x+'0'; \ cout << hex << x << endl; \ return x; /*这样就直接return了在main
2013-05-16 14:08:28
1641
原创 判断一个序列的出栈次序是否合法
/******************判断pop是否是src的合法出栈序列*****************************/bool isPopSeq(string src, string pop){ stack sch; int len=pop.length(); if(src.length()!=pop.length()) return false; for(int
2013-05-16 14:04:08
2146
原创 判断IPV4地址是否合法
/***************判断是否是合法的IPV4*****************************************/bool isValidIP(string ip){ int num=0; string::iterator it; //判断前三段是否合法,如果存在的话 for(int i=0;i<3;i++){ int idx=ip.find(".");
2013-05-16 14:02:55
8801
转载 使用非递归实现快速排序
http://www.cnblogs.com/zhangchaoyang/articles/2234815.html./*首先说明一下快速排序是对冒泡排序的改进。为什么这么说呢?想一下冒泡排序,它把序列分成了两部分,前半部分无序,后半部分升序排列,并且后半部分的数都大于前半部的数。由此可得到快速排序和冒泡排序的一些共同点:1.都要经历n趟排序2.每趟排序要经历O(n)次比较3.都是
2013-05-16 13:51:21
3198
1
原创 wxpython后台线程更新界面控件方法
http://blog.sina.com.cn/s/blog_56146dc501009ea9.htmlhttp://www.th7.cn/Program/Python/201303/128088.shtmlhttp://blog.donews.com/limodou/archive/2005/08/15/509966.aspx在大多数的GUI应用程序中,在应用程序的后台中长期执行一个
2013-03-26 10:38:36
10528
1
转载 linux popen用法详解
http://linux.chinaitlab.com/c/806015.html函数原型: #include “stdio.h” FILE *popen( const char* command, const char* mode ) 参数说明: command: 是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -
2013-03-21 22:28:07
11854
转载 linux awk小解
http://wenku.baidu.com/view/ebac4fc658f5f61fb736664d.htmlhttp://www.chinaunix.net/old_jh/24/691456.htmlawk在进行文本扫描的过程中,是一行一行进行处理的,每一行称为一条记录,每一行中的不同列称为域。NR:处理到的当前行数NF:当前记录的列数$i :当前记录的第i个域‘/x
2013-03-21 10:50:27
994
转载 linux fork小解
http://www.boluor.com/summary-of-fork-in-linux.htmlfork函数在linux中非常重要,因为进程大多是通过它来创建的,比如linux系统在启动时首先创建了进程0,之后的很多进程借助do_fork得到创建.这两天在看匿名管道时了解了下fork,其应用毕竟广,这里只说些我才学到的吧.首先来看例1.#include "stdio.h" #
2013-03-21 10:06:57
1077
原创 python编码错误UnicodeDecodeError: 'ascii'/'utf-8' codec can't decode byte 0xb8 in position 50: ord
这个错误是因为你代码中的某个字符串使用了费ascii编码的字符,也就是它代表的16进制的编码超过127。解决这个问题可以使用下面的方法解决,其实就是设置默认的编码。python 2.x的默认编码是ascii,如果改为utf-8,就可以了如果有中文还是不行,可以使用gbk编码方式,具体使用如下:import sysreload( sys )sys.setdefaultenco
2013-03-02 20:58:43
10500
2
原创 关于在一个序列中寻找中位数和第K大的数(在两个等长有序数组中寻找中位数)
现有两个数组A和B长度都为n,且每个数组中的元素都是升序排列,设计一个在时间空间上都尽可能高效的算法,来寻找两个数组整体上的中位数。1. Merge排序选择第n和n+1个即可,但是这个复杂度是O(2*n)的,空间是O(n+1)的,因为找到第n和n+1个停止即可,不需要继续进行归并。2. 败者树,其实这个在时间复杂度上没有优化也是O(2*n)的,但是在空间复杂
2012-10-09 11:16:44
3530
转载 已知二叉树的中序和前序序列(或后序)求解树
http://www.cnblogs.com/bmrs/archive/2010/08/19/SloveTree.html这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的。一、已知二叉树的前序序列和中序序列,求解树。1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有
2012-08-29 19:58:48
2014
转载 母牛产牛问题
http://topic.csdn.net/u/20120828/12/8336bd43-4a3c-4b77-bf17-2fa854c3702e.html一头母牛从出生后,每两年可以生下一头母牛,即在第二年和第四年分别可产下一头母牛,出生后第五年将会死去。假设农场现有一头母牛,N年后农场的母牛数目是多少,编写程序实现用五个数字或数组来记录当前岁数的牛的个数,每增长一年的时候都会年长一岁的个
2012-08-29 15:40:09
2322
原创 三个水杯盛两个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
2469
原创 小明一家过河
有一家人想要渡河,小明过河需要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
5973
1
原创 牛奶杯和水杯
有两个大小完全相同的杯子,一个里面装牛奶,另一个里面装相同体积的水。现在从牛奶杯中舀出一勺到水杯中,搅拌均匀后再从水杯中舀出一勺到牛奶杯中。问现在是牛奶杯中含有的水多还是水杯中含有的牛奶多,还是两者一样多。1. 开始想到的是用公式推算,当然也能得出正确结果2. 这个问题其实考的是一种思维方式,一种思路。其实从牛奶杯中少的牛奶和从水杯中少的水是一样多的,而且从水杯中少的水
2012-05-30 09:27:47
1971
原创 冒烟测试、阿尔法测试、贝塔测试和性能测试
“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程。冒烟测试(smoke test)在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。 冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确
2012-05-30 09:10:33
14817
原创 将数字字符串格式转换为原来字符串中出现的字符+该字符连续出现的次数的字符串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
2171
原创 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
2290
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
2963
原创 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
3272
原创 输入一行字符串,找出其中的相同且长度最长的字符串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
2929
转载 使用循环单链表解决约瑟夫环问题
#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
4203
原创 虚函数表指针、虚基类表指针
虚函数表指针、虚基类表指针对于虚函数表指针和虚基类表指针:当单继承且非虚继承时:每个含有虚函数的表只有一个虚函数表,所以只需要一个虚表指针即可;当多继承且非虚继承时:一个子类有几个父类则会有几个虚函数表,所以就有和父类个数相同的虚表指针来标识;总之,当时非虚继承时,不需要额外增加虚函数表指针。 当虚继承时:无论是单虚继承还是多虚继承,需要有一个虚基类表来记录虚继承关系,所以
2012-05-23 10:39:14
9954
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
826
原创 虚函数调用,虚继承时候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
816
转载 把一个连续数序列打乱判断少了那些数
http://hxraid.iteye.com/blog/618153. 问题:100个连续的数打乱之后,随机取出1个数,问如何最快速的判断出少了哪一个?分析:对于所有100个连续的数,只要除余100。一定在0~99之间。一般来说,比较常规的做法就是先排序(利用Hash表定位),在循环查找。当然时间复杂度是O(2n)。现在介绍一种很牛的O(n)做法:求二进制异或运算。异或运
2012-05-21 15:31:47
1811
原创 取石子儿和拿扑克牌问题
Tang和Jiang非常喜欢玩一种有趣的小游戏:有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。最后一个取石子的人获胜,第一次总是Tang取.当然,他们俩都足够聪明,总会采取最优的策略。算法思想(使用递归):当剩余为1、3、4的时候先手者必胜;如果当前数目不是这三个数字,则递归采用去1或3或4,只要其中有一种方式使得剩下的字儿使对方输,则先手者必胜;否则后
2012-05-21 10:52:53
1797
转载 关于寻找中位数
http://lu007heng.iteye.com/blog/942722今天无意中看到一篇关于快速排序的文章。毫无疑问,快速排序正如他的名字一样,如果不是一些特殊情况(基本有序了,排序项目个数较少),他一般是最快的排序。但是,在快速排序中一般会有一个第一步选取切分值的过程。在快速排序中,这个值我们一般是随机抽取的,或者直接选取最右端或左端的数。但是,快速排序的一个变种是第一步选取这个值为中
2012-05-20 23:00:38
1161
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
2311
转载 10G个整数的文件中寻找中位数
10G个整数的文件中寻找中位数http://hxraid.iteye.com/blog/649831题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。分析:既然要找中位数,很简单就是排序的想法。那么基于字节的桶排序是一个可行的方法(请见
2012-05-20 22:54:34
1222
转载 一个不错的讲解基础数据结构和算法的博客
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
1506
1
转载 基数排序
基数排序http://hxraid.iteye.com/blog/648532《桶排序》中我们能够看到,数据值的范围越大,可能需要桶的个数也就越多,空间代价也就越高。对于上亿单位的关键字,桶排序是很不实用的。基数排序是对桶排序的一种改进,这种改进是让“桶排序”适合于更大的元素值集合的情况,而不是提高性能。多关键字排序问题(类似于字典序):我们先看看扑克牌的例子。一张牌有两个关键字组
2012-05-20 22:45:08
580
转载 桶排序
桶排序:http://hxraid.iteye.com/blog/647759从《基于比较的排序结构总结 》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设,来避免绝大多数的“比较”操作。桶排序就是这样的原理。桶排序的
2012-05-20 22:35:47
725
转载 寻找一个序列中的主元素
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
6936
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
761
转载 赛马问题
一共有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
4443
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
889
转载 “火柴棍式”程序员面试题
http://coolshell.cn/articles/3961.html有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的
2012-05-19 10:21:38
810
转载 会编程的煤老板
会编程的煤老板你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?http://blog.csdn.net/yinghuashihun/article/details/6864
2012-05-19 10:19:58
2088
原创 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
4001
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人