Algorithm
文章平均质量分 53
congduanxd
每天进步一点点
展开
-
基本数据结构的实现——单向链表
链表是最常用的存储结构之一,可以灵活的进行插入删除等操作,这里我将链表的建立(包括头插法和尾插法),插入,删除,查找,释放,遍历进行了实现,若有纰漏,恳请批评指正。欢迎交流。另外,本文的代码可以进行任意复制传播。 #include#includeusing namespace std;typedef char datatype;typedef struct node{原创 2012-04-29 22:14:44 · 1847 阅读 · 0 评论 -
不用+-×÷求两个整数的之和
分析:这个问题最容易想到的是利用位运算实现。类似数字电路中的全加器的原理。2bit全加器的原理如下:输出S=A异或B进位C=A与B真值表如下:ABSC0000011011原创 2012-05-22 17:06:50 · 1611 阅读 · 0 评论 -
(2012年百度面试题)复杂链表(双指针)的拷贝
题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: struct ComplexNode { int m_nValue; ComplexNode* m_pNext; ComplexNode* m_pSibling; };下图是一个含有原创 2012-05-22 17:22:45 · 3788 阅读 · 1 评论 -
(译)浮点数比较—Comparing floating point numbers
from: http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm本人翻译了一小段,由于懒惰,没有继续,建议直接看原文。======================================================================================翻译 2012-06-23 14:45:01 · 3877 阅读 · 0 评论 -
Kalman filter toolbox for Matlab(Matlab卡尔曼滤波工具箱)
原文地址:http://www.cs.ubc.ca/~murphyk/Software/Kalman/kalman.htmlWritten by Kevin Murphy, 1998.Last updated: 7 June 2004.This toolbox supports filtering, smoothing and parameter estimation (using转载 2012-11-08 18:04:26 · 15148 阅读 · 0 评论 -
递归遍历数组子集
题目:数组(例如{a,b,c}),递归打印出所有子集思路:数组元素要么在子集中,要么不在子集中,N个元素的数组子集个数为2^N,在不在子集中可以用0和1表示,N个元素的子集就可以用N位二进制数表示,因此遍历所有子集只需遍历所有N位二进制数即可代码如下:原创 2014-04-18 11:02:40 · 4278 阅读 · 0 评论 -
(2014微软实习生笔试题)1.String reorder
题目:Time Limit: 10000msCase Time Limit: 1000msMemory Limit: 256MB DescriptionFor this question, your program is required to process an input string containing only ASCII characters between原创 2014-04-18 11:12:41 · 1398 阅读 · 0 评论 -
(2014微软实习生笔试题)2.K-th string
题目: 思路:就是从头开始数二进制数,到第K个满足条件(n个0,m个1,相加值为m)就打印并结束 效果 代码如下:#include#include#include#includechar* dec2bin(int n,int k){ int i=0; char* str = (char*)malloc(k*sizeof(char)); for(i=0;原创 2014-04-18 11:21:06 · 1642 阅读 · 0 评论 -
【LeetCode】LeetCode第一阶段50题小结
研二了,又到了找实习的时候。3年前大三的此时,实习面试回来,写了一篇痛定思痛的面试经历总结,现在翻看,依然历历在目。三年之间,自己也成长了不少,做了不少项目,也写了很多代码,但是仍然没有在数据结构与算法上下工夫。今年面试阿里巴巴实习生得以侥幸通过,面试官问到的题目还能正常应对,但是自己有一杆称知道自己的算法水平几斤几两。4月到9月,总共5个月,踏踏实实做点题,看点书,总是有好处的,至少在校招面试的时原创 2015-04-23 14:39:46 · 1766 阅读 · 1 评论 -
【POJ】POJ 3276 Face The Right Way (开关问题)
题目大意 N头牛站成线,有朝前的(F)有朝后的(B),然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作M次使得它们全部面朝前方。问:求最小操作M,再此基础上求K。 思路从前往后进行反转,每次反转K头牛,下一次反转从第一头需要反转的牛开始。 状态搜索的话有2^N 种情况,会超时。可以遍历一下区间长度K=1到N,找出里面最少次数的。遍历的时候保证一个区间最多反转一次。先固定一个K原创 2015-04-25 18:16:26 · 1913 阅读 · 0 评论 -
从DFA角度理解KMP算法
KMP 算法KMP(Knuth-Morris-Pratt)算法在字符串查找中是很高效的一种算法,假设文本字符串长度为n,模式字符串长度为m,则时间复杂度为O(m+n),最坏情况下能提供线性时间运行时间保证。《算法导论》和其他地方在讲解KMP算法的时候,过于数学化且晦涩难懂,我也因此迷惑了很长时间。后来看《算法(第四版)》部分的讲解,对其中最复杂的Next数组有了重新的认识。我这里也希望用通俗的语言来原创 2015-05-03 17:18:22 · 11263 阅读 · 6 评论 -
三种素数筛选法详解
转自:http://tr0217.blog.163.com/blog/static/3606648020099302135503/第一种:剔除2 3 4 5 6 ... ... 的倍数在i从2开始的增一变化过程中,剔除i的倍数即j*i(j是大于等于2的自然数,j的上限是问题规模M)为了减少重复步骤,可以每当i递增到等于第一个没有被剔除的(素)数时再剔除该数的倍数,重转载 2012-05-20 15:52:47 · 1245 阅读 · 0 评论 -
(待写)二分图最大匹配算法
背景:Xidian OJ 1078Description 2012来临之际,世界正在遭受着各种灾难。深远领主 丁丁二世也在这时候显露了他邪恶的本性。 丁丁拥有制造地震和海啸的能力。这一次,丁丁决定用最多的“超级组合”来破坏ACM实验室的稳定与和平。丁丁能制造 n 个地震, m 个海啸。每个地震对于海啸都有着特殊的喜好,只有地震 和其 喜好的海啸联手,才能成原创 2012-06-06 14:32:52 · 1454 阅读 · 0 评论 -
百度之星资格赛——E题
E:C++ 与Java时间限制: 2000ms 内存限制: 65536kB描述在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时。Java的爱好者会说他们的程序更加整洁且不易出错。C++的爱好者则会嘲笑Java程序很慢而且代码很长。另一个Java和C++爱好者不能达成一致的争论点就是命名问题。在Java中一个多个单词构成的变量名应该按照如原创 2012-06-01 17:21:45 · 1077 阅读 · 0 评论 -
玩转算法之I love sorting —— QuickSort
在各种排序算法层出不穷的今日,QuickSort即快速排序可谓独立风骚了。当然它不是最快的排序算法,因为它也是基于比较的排序算法,平均运行时间为Θ(nlogn),在最坏的情况下,它的性能也只能和插入排序相当,即Θ(n^2)。下面我们就来揭开它的真面目吧! 本质上看,快速排序是基于分治的思想。说到分治,就是将一个问题大而化小,分而治之。待子问题各个击破之后,在合并起来,成为我们想原创 2012-04-29 01:00:16 · 1901 阅读 · 2 评论 -
与二进制有关的几道面试题
这个是在博客园的博问里面看到的1、现有1000个苹果,10个盒子,现在要你将1000个苹果装入10个盒子中,使得用户无论购买多少个苹果(1-1000),都能由若干个盒子拼装而成(卖的时候是整个盒子卖,不能拆盒子的包装)解法:考虑1, 2, 4, 8这四个数,由这四个数可以组成1-15之间任意一个数,也即1,2, 4 ... 2n 可以组成1-2(n+1)-1之间所有的数。所以这十个转载 2012-05-27 16:09:15 · 2263 阅读 · 0 评论 -
字符串面试题:字符串逆序
几点说明1. 所有题目全部来自网络,书籍,或者我自己的面试经历,本人只是负责搜集整理。在此对原作者表示感谢!2. 我已经尽力确保文字及程序的正确性,但我毕竟是凡人,如果您发现了文章中的错误,或者有更好的解法,请一定留言相告,以免误导大家!3. 所有代码都采用C/C++编写很早就准备写一个字符串系列的面试题,本来已经写好了,大概有十几道题,但是写完才发现,文章好长,连我自己都没有耐心转载 2012-05-27 15:43:28 · 1419 阅读 · 0 评论 -
百度之星资格赛——D题
D:共同狂欢时间限制: 1000ms 内存限制: 131072kB描述百度2005年8月5日上市时,在北京和纳斯达克的同学们每一个小时整点时就会通一次电话,对一下表,确认一切相关活动都精确同步。但是要注意,在两边的同学位于不同的时区,在夏时制时,两地时差12小时,因此,每次对表都需要做一下时区转换。你来帮我们完成这个有点麻烦的工作吧。输入输入的第一行包括一个整数T(T ≤ 30原创 2012-06-01 17:20:28 · 1320 阅读 · 0 评论 -
百度之星资格赛——G题
G:聊天就是Repeat时间限制: 1000ms 内存限制: 65536kB描述百度Hi作为百度旗下的即时聊天工具,在百度公司内部很是流行。要实现这样的一个聊天工具,最重要的问题就是要能保证我发出的内容能原封不动的在接收同学那里显示出来。今天,就给你一个机会,让你模拟一下百度Hi传递信息的过程,把我发给Robin的聊天内容原封不动的输出出来。输入输入的聊天内容数据有多组,每组数原创 2012-06-01 17:23:05 · 1089 阅读 · 0 评论 -
百度之星资格赛——J题
J:百度的新大厦时间限制: 1000ms 内存限制: 65536kB描述继百度搜索框大厦之后,百度又于2012年初在深圳奠基了新的百度国际大厦,作为未来百度国际化的桥头堡。不同于百度在北京的搜索框大厦,新的百度国际大厦是一栋高楼,有非常多的楼层,让每个楼中的电梯都能到达所有楼层将是一个极为不明智的设计。因此,设计师给出了一个特别的设计——一共大厦有m个电梯,每个电梯只有两个按钮,(针对原创 2012-06-01 17:27:26 · 1042 阅读 · 0 评论 -
2012百度之星程序设计大赛试题及答案(答案来源网络)
A:百度计算器的加法时间限制: 1000ms 内存限制: 10000kB描述百度框计算中提供了计算器这个功能,模拟计算器中的复杂功能,我们最先需要解决的就是实现加法模块。今天就给你个机会,和百度计算器一样,计算一下十以内的加法吧。输入仅有一组数据,包含两个正整数,分别为a, b(0 输出一个正整数,暨输入a, b后对应的a+b的计算结果样例输入5 2样例输出原创 2012-06-01 17:37:33 · 2771 阅读 · 1 评论 -
百度之星资格赛——B题
B:小诺爱USB设备时间限制: 1000ms 内存限制: 65536kB描述在百度工作的小诺是一个USB设备迷,在他桌上有一堆的USB设备——USB鼠标、USB小音箱、USB按摩器……但是,公司配给小诺的ThinkPad X系列的电脑只有一个能用的USB接口。不过还好,小诺有一堆的USB Hub,可以把一个可用的USB接口变成多个USB接口。但是,小诺很难确定这些USB Hub能否满足原创 2012-06-01 17:17:18 · 1183 阅读 · 0 评论 -
百度之星资格赛——C题
C:易手机的套餐时间限制: 1000ms 内存限制: 10000kB描述装载百度易平台的易手机已经上市,为了更好的为大家提供服务。百度与合作的运营商正在讨论为易手机用户推出一款特别的套餐,帮助大家更好的利用易手机。作为这个项目负责人的晓萌调研了大量用户使用这个套餐后会出现的资费预估,让我们来看看这个特别的套餐到底会带来怎样资费情况吧。输入输入数据包括十二行,每行包括一个数字(不原创 2012-06-01 17:18:46 · 976 阅读 · 0 评论 -
百度之星资格赛——H题
H:用户请求中的品牌时间限制: 1000ms 内存限制: 65536kB描述馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇。在比方说“johnsonjohnson”、“duckduck”,这些词汇虽然看起来是一些词汇的单纯重复,但是往往都是一些特殊品牌的词汇,不能被拆分开。为了侦测出这种词的存在,你今天需要完成我给出的这个任务——原创 2012-06-01 17:26:11 · 1146 阅读 · 0 评论 -
2012百度之星初赛——A题
A:度度熊就是要第一个出场时间限制: 1000ms 内存限制: 65536kB 描述 Baidu年会安排了一场时装秀节目。N名员工将依次身穿盛装上台表演。表演的顺序是通过一种“画线”抽签的方式决定的。首先,员工们在一张白纸上画下N条平行的竖线。在竖线的上方从左到右依次写下1至N代表员工的编号;在竖线的下方也从左到右依次写下1至N代表出场表演的次序。 接着,员工们原创 2012-06-02 17:53:47 · 1391 阅读 · 0 评论 -
360公司2016校园招聘笔试题大题一
题意大概是说,输入多行,每行一个数,然后分解成素数相乘的形式,并以7段数码管的显示方式打印。示例注意点分解的时候,可能有超过9的素数因子,比如13,需要转换成1和3进行打印代码import java.io.*;import java.util.*;public class Main { static char[][] numbers = { {' ', ' ','-',' ', '原创 2015-09-20 15:50:05 · 3013 阅读 · 2 评论