随笔分类 -  数据结构算法

摘要:题目来源:http://poj.org/problem?id=1455题目意译:有n个人围在桌子前面喝茶,等大家都坐定后,必然有个前后左右顺序,比如:a左边b,b左边c,依次类推,最后一个假设是g,那么他左边必然是a。形成一个圆环。现在有个规则,规定每次只能相邻两个人进行交换位置。请问要经过多少次交换,才能让之前位置交换(b左边a,c左边b,a左边是g)思路:大家都清楚假定是一排的情况下:a b c d e f g如果位置交换后:g f e d c b a需要经过n*(n-1)/2次交换(冒泡法进行交换)现在情况是环形,试问能不能将环拆分成两个线性,然后进行交换,再拼接在一起。举例如下:a b 阅读全文
posted @ 2011-10-16 19:19 Eric.wei 阅读(178) 评论(0) 推荐(0)
摘要:X和Y,当另一序列Z既是X的子序列又是Y的子序列时,若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。 同理,若序列Z既是X的子序列同时也是Y的子序列,则称Z为X和Y的公共子序列。其中最长的子序列称为最长公共子序列。 在求最长公共子序列中,我们可以看出如下规律: 设序列X={x1,x2,…,xm}和Y={y1,y2... 阅读全文
posted @ 2011-10-12 11:08 Eric.wei 阅读(297) 评论(0) 推荐(0)
摘要:个人简要介绍下自己 无序查中位数(lgn) Linux下详细编译过程(预处理-->编译-->汇编-->优化-->链接) 编译中的-o2影响什么 进程、线程对比() 进程间通讯(共享内存,管道,信号量,消息) 线程间通讯(全局变量,message,event) TCP/IP连接过程(三次握手以及程序中的步骤两个方面讲解) 现场写快排程序 认为最成功的一个项目进行介绍 void指针的含义(万能指针,任何类型指针都可以赋值给void指针,类似memcpy接受的应该就是万能指针) memcpy实现(需要考... 阅读全文
posted @ 2011-10-10 16:25 Eric.wei 阅读(528) 评论(0) 推荐(0)
摘要:技术类岗位笔试面试中排序算法是永远的话题,先整理如下 :八大排序算法插入排序:1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:1VoidInsertSort(NodeL[],intlength)2{34Inti,j;//分别为有序区和无序区指针56for(i=1;i<length;i++)//逐步扩大有序区78{910j=i+1;1112if(L[j]<L[i])1314{1516L[0]=L[j];//存储待排序元素171 阅读全文
posted @ 2011-10-10 10:32 Eric.wei 阅读(319) 评论(0) 推荐(0)
摘要:BaiDu往年面试题目汇总☆WM☆祝自己明天能取得一个好的面试成绩题目来源:http://www.cnblogs.com/cutepig/archive/2007/09/14/893552.html1.char a=255;sizeof(++a)=?(1)//这题可以参考我以往文章,关于sizeof的分析a=?(-1)//数组越界2.删除掉cpp文件中的所有注释这题考察的是对文件的操作题, 程序稍后奉上3.用脚本(bash)统计(不是特别清楚,只记得diff可以实现两个文件不同的行,回头查)两个文本文件的相同的行,??第一文件有而第二文件无的行??,两个文件的补集。4.设计一个简化的bbs系统 阅读全文
posted @ 2011-10-09 23:49 Eric.wei 阅读(272) 评论(0) 推荐(0)
摘要:以下数据来自于Dev CPP首先呈现实际测试数据:主程序如下:1#include<string.h>2#include<iostream>34usingnamespacestd;56typedefstructs1{7//charch,*ptr;8union{9shorta,b;10//unsignedintc:2,d:1;11};12};13//structs1*next;14//};1516intmain()17{18printf("%d\n",sizeof(s1));19system("pause");20return1;21 阅读全文
posted @ 2011-10-06 23:38 Eric.wei 阅读(447) 评论(0) 推荐(1)
摘要:给出一行C语言表达式,判断给定的整数是否是一个2的幂。(谷歌面试智力题)假定x:if((x&(x-1))==0)成立的话就是2的幂一个大小为N的数组,所有数都是不超过N-1的正整数。用O(N)的时间找出重复的那个数(假设只有一个)。一个大小为N的数组,所有数都是不超过N+1的正整数。用O(N)的时间找出没有出现过的那个数(假设只有一个)。(谷歌面试智力题)这题有几种解法,一种是求和做减法就可以得出具体的数,但是这个做法不一定是最好的方法,毕竟是会出现各种异常情况,比如:数据溢出等还有一种做法就是做标记,如果你认为开辟uchar仍然占用内存很大,那么可以试试bit来做记录,自己写一个用b 阅读全文
posted @ 2011-09-25 22:33 Eric.wei 阅读(311) 评论(0) 推荐(0)
摘要:题目来源自:http://apps.hi.baidu.com/share/detail/31359085笔试一共四个大题,一、二、四必做,三根据申请职位不同选作,一个小时的时间一,选择:1. 下列关于模块功能独立性,模块内聚与耦合,关于内聚的是:a)信息隐蔽 b)模块功能强度 c) d)记不清楚了2. 下列哪个Http的返回编码不正确考了403 500 501 502(正确意思分别是禁止访问、内部服务器错、未实现、网关错误)3. Struct st{char* a,short b,char c[5],int d};St xx[3];Char* p=(char*)&(xx[2... 阅读全文
posted @ 2011-09-25 20:51 Eric.wei 阅读(481) 评论(0) 推荐(0)
摘要:最后一道大题中有两道编程题题目一:编用lgn的时间复杂度找出有序数组A B(A B长度均为n个)的中位数题目要求用lgn的复杂度,这就限制了我们归并后二分查找的思路。现在只能是在数组AB之上进行直接进行二分查找。思路如下:a1 a2 a3 a4 a5 a6……anb1 b2 b3 b4 b5 b6……bn对AB首先进行一次二分查找,假设定位在了ai bi两个数上比较ai bi的大小如果ai>bi,那么数组A取ai左部的进行二分递归,B取bi右部进行二分递归重复步骤3,直至区间只剩下一个元素这时可以进行判断数组A以这剩余元素的左右两侧的长度同时判断B中最后一个元素将B分割的效果进行判断AB 阅读全文
posted @ 2011-09-18 20:21 Eric.wei 阅读(754) 评论(0) 推荐(0)
摘要:sizeof()对应指针,数组,结构体的长度结构体在编译器的对齐方式调整下的存储方式空类的sizeof大小,虚类继承需要涉及虚表(4字节)auto_ptr的使用问题stl中push_back浅拷贝造成对象中的析构函数可能会执行两遍问题 阅读全文
posted @ 2011-09-18 12:24 Eric.wei 阅读(306) 评论(0) 推荐(0)
摘要:1#include<iostream>2#include<string>3usingnamespacestd;45#defineMAXN1067structNode8{9intindex;10Node*next;11};1213classYSF14{15public:16intn;//规模17intm;18Node*top;19Node*bottom;20Node*t;21YSF(intln,intlm)22{23n=ln;24m=lm;25top=newNode();26bottom=top;27top->index=0;28for(inti=1;i<n; 阅读全文
posted @ 2011-09-17 23:36 Eric.wei 阅读(937) 评论(0) 推荐(0)
摘要:一段字符串中提取最长的回文长度:浅显易懂的想法就是假设任何一个位置的字符为回文中心,进行两个方向的扩散,进而提取最长回文。这是最朴素的想法:代码如下:1#include<iostream>2#include<string>3usingnamespacestd;45charstr[100]="abbbbaaa";678//如果是回文长度是偶数个9intgetMidtwoNum(char*s,intlength,intindex)10{11intre=1;12intt=index,b=index+1;13while(t>=0&&b& 阅读全文
posted @ 2011-09-17 23:06 Eric.wei 阅读(985) 评论(0) 推荐(0)
摘要:给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}题目考察的是排序+规格化输出:容易让人理解的解法,首先进行排序,进而 阅读全文
posted @ 2011-09-17 20:55 Eric.wei 阅读(1349) 评论(0) 推荐(0)
摘要:另外更新的2012华为题库地址链接如下:2012华为机试排序题目2012华为2011年9月17日上机题目之最长回文2012华为2011年9月17日上机题目之约瑟夫环模拟法实现程序2012中兴南京笔试试题大题汇总及参考程序地区一:1. 编写函数string deletestring(string str,string sub_str)从str中查找匹配的字符串sub_str,采用最左匹配,且输出形式为str+"_"+匹配的次数题目一的意思应该是求解字符串str中子字符串sub_str的个数,同时输出形式采用原字符串+"_"匹配次数相信大家第一反应应该是采用 阅读全文
posted @ 2011-09-17 13:13 Eric.wei 阅读(3452) 评论(1) 推荐(0)
摘要:BM算法的详细图示,请下载pdf查看。BM算法详细图示描述 阅读全文
posted @ 2010-10-28 08:48 Eric.wei 阅读(415) 评论(0) 推荐(0)
摘要:统计汉字和英文字符需要分别判断是汉字或者是英文字符非unicode系统中,计算机中英文字符均为asscii码,其不可能超过0x80如果读入的字符的unsigned的值大于0x80,则其与后续的一个char组成的是一个unicode编码字符。所以判断英文或者是asscii的代码如下:[代码]下面就要设计采用什么样的结构进行统计次数呢。我采用了map struct的形式进行了统计和比较这样可以保证同一... 阅读全文
posted @ 2010-10-09 12:10 Eric.wei 阅读(761) 评论(0) 推荐(0)
摘要:今天看到博客园一位仁兄的相亲数,整体感觉不错。原文出处:http://www.cnblogs.com/devil0153/archive/2010/08/22/AmicablePair-And-PerfectNumber.html版权声明:版权归作者WeiSteven所有,转载请注明!但有些算法感觉有些大材小用,随手写了一个最简单的相亲数的判断程序:运行效果不是想象中的差,没进行任何的优化:其中只... 阅读全文
posted @ 2010-08-23 10:16 Eric.wei 阅读(956) 评论(0) 推荐(0)
摘要:版权声明:版权归作者WeiSteven所有,转载请注明!字符串划分:首先系统提供一系列的字符串,每个字符串具有一定的权值,切字符串唯一。求解任意一个字符串的所有可能划分,并输出对应的权值和。Example:BaseString.txt内容a 9aa 21aab 33bc 22bbc 30cd 10cdd 25待拆分字符串例如:aaabc输出:a aa bc 52……(还有两... 阅读全文
posted @ 2010-08-23 08:50 Eric.wei 阅读(698) 评论(3) 推荐(1)
摘要:版权声明:版权归作者WeiSteven所有,转载请注明!不是所有的银行卡都是有效地,它是遵循一定的规律的。对于一个卡号,验证其证伪可以采用:奇数位数字相加求和偶数位每位乘以2,如果超过10,则减9作为此位数字,然后求偶数位和奇数位和加上偶数位和应该是10的倍数。如果不满足上述条件,则此银行卡号是非法的。请编写程序,判断给定的银行卡号是否合法参考答案:代码Code highlighting prod... 阅读全文
posted @ 2010-08-20 20:04 Eric.wei 阅读(289) 评论(0) 推荐(0)
摘要:2.2基于人员名单:李爱华,北京张立,吉林吴祖含,上海张颖,河北李文虎,北京许林,湖南赵平复,河北唐笑,北京刘小明,河北董其云,北京统计其信息,输出格式如下:北京4李爱华李文虎唐笑董其云河北1……其中省份不用考虑顺序,人员之间不用考虑顺序。参考程序:[代码]版权声明:版权归作者WeiSteven所有,转载请注明! 阅读全文
posted @ 2010-08-20 19:56 Eric.wei 阅读(465) 评论(3) 推荐(0)