自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

承续缘的信仰

Like C++ Algorithm

  • 博客(83)
  • 资源 (1)
  • 收藏
  • 关注

转载 你是想读书,还是想读完书?

以前,读书前会很想读一本书,但实际读书时,经常是“想读完书”,而不是“想读书”。这种想法经常会让我的生活变得很痛苦,当你做一件事想着快点做完时,你的心思其实已经不在这件事上了。  这个问题在我大学时困扰了我很久。我没有意识到这本身其实是一个价值观问题,以至于我常在一些时间管理的书中寻找答案。那些书都只能让你更高效地“做完事”,却不能让你在做的过程中更投入一分。  直到后来离开学校,

2013-08-23 00:22:23 1195

原创 动态规划DP持续分析(update)

动态规划是什么?一种算法?NO。DP是一种解决一类问题的方法,不是某一种特定的算法。最优子结构性质,这也是标志一个问题可以用DP来解决的一个元素性质。最优子结构:如果一个问题的最优解包含子问题的最优解,则该问题具有最优子结构。这也是标志一个问题可以用DP来解决的另一个元素性质,重叠子问题性质。重叠子问题要求最优子结构要很小,为啥呢?因为要求可以反复递归解决同样的子问题,而不是不停的产生新的子问题(分治法每次递归都产生新的子问题)。当一个递归算法不断重复调用同一个子问题时,我们就说该问题包含重叠子问题,

2013-07-21 00:10:07 4056 3

转载 【Google】25匹马的角逐

问题是这样的:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少 得比多少场才能知道跑得最快的5匹马。 注意: "假设每匹马都跑的很稳定" 的意思是在上一场比赛中A马比B马快,则下一场比赛中A马依然比B马快。 稍微想一下,可以采用一种 竞标赛排序(Tourname

2013-09-23 23:26:05 1378

转载 多重继承及虚继承中对象内存的分布

多重继承及虚继承中对象内存的分布这篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。问题拿捏得十分到位,下面是我对原文的翻译,原文见这里(By Edsko de Vries, January 2006)。本文是介绍C++的技术文章,假定读者对于C

2013-09-23 22:34:57 1221

转载 搜索智能提示suggestion,附近点搜索

第三十六~三十七章、搜索智能提示suggestion,附近地点搜索作者:July。致谢:caopengcs、胡果果。时间:二零一三年九月七日。题记    写博的近三年,整理了太多太多的笔试面试题,如微软面试100题系列,和眼下这个程序员编程艺术系列,真心觉得题目年年变,但解决问题的方法永远都是那几种,用心准备后,自会发现一切有迹可循。

2013-09-12 22:38:52 1533

转载 腾讯2012 笔试题-----A、B两人玩猜字游戏

这个是腾讯2012年暑期实习生招聘的一道笔试题,考试的时候也没仔细思考,没做出来。╮(╯_╰)╭。现在回过来想想,这题还是蛮有意思的,本人给出了一种解法,不能保证100%正确,希望大家看到了提出自己的见解。A、B两人玩猜字游戏,游戏规则如下:A选定一个 [1,100]之间的数字背对B写在纸上,然后让B开始猜;如果B猜的偏小,A会提示B这次猜的偏小;一旦B

2013-09-09 14:28:35 3037

原创 2012年腾讯实习生笔试附加题

已知数组a[n],求数组b[n].要求:b[i]=a[0]*a[1]*……*a[n-1]/a[i],不能用除法。a.时间复杂度O(n),空间复杂度O(1)。 b.除了迭代器i,不允许使用任何其它变量(包括栈临时变量等) 时间复杂度限制了算法的编写,不过可以用前累乘,后累乘,两边再乘OK。#include #include #define N 10int main(){

2013-09-09 14:27:32 1306

转载 《数据结构与算法分析》5000字缩写

4月7日买起来看,前几天才看完。这可以说明很多问题,比如,学习很紧张,没有时间;书本身很好,很有看头;看书看得很细心,很有耐心。    打算大致写一下书里的内容。    Data Structures and Algorithm Analysis in C, Second Edition,机械工业出版社。封面很丑,一个黑底版,上面有些大理石花纹,正中间生硬的摆一个原版封面,同样丑。一共12

2013-09-09 13:51:29 1637

转载 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

从hadoop框架与MapReduce模式中谈海量数据处理前言    几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之后,觉得Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了一个我更加感兴趣的话题:海量数据处理。    由此,最近凡是空

2013-09-09 00:12:29 1865

转载 MapReduce技术的初步了解与学习

MapReduce技术的初步了解与学习 --包含Google MapReduce中文版    今天咱们学习下MapReduce模型。由于是本人是初次接触,不是很了解。所以,有任何问题,还望各位不吝批评指正。本文中,我会先用最最通俗的语言阐述什么是MapReduce,然后再摘自Google MapReduce中文版上的一些内容,以期对这个模型有个初步的了解与认识。ok,闲不多说,下面

2013-09-09 00:10:16 1962 2

转载 最明白的KMP算法详解

如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。    我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如

2013-09-08 22:14:18 1261

转载 一次谷歌的面试趣事

一次谷歌面试趣事很多年前我进入硅谷人才市场,当时是想找一份高级工程师的职位。如果你有一段时间没有面试过,根据经验,有个非常有用的提醒你应该接受,就是:你往往会在前几次面试中的什么地方犯一些错误。简单而言就是,不要首先去你梦想的公司里面试。面试中有多如牛毛的应该注意的问题,你可能全部忘记了,所以,先去几个不太重要的公司里面试,它们会在这些方

2013-09-06 00:12:59 1245

原创 回溯法

回溯法其实是搜索算法中的一种控制策略。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前探索试探,在探索试探过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行,直至得到解或证明无解。

2013-08-24 19:17:44 3563

转载 令人忧虑,不阅读的中国人

近日,一名印度工程师所写的《令人忧虑,不阅读的中国人》红遍网络。他说,未来的中国前途堪忧!全文如下(编者:从文中叙述看,有些表达不太像是出自一名印度工程师之口,不过道理是一样的,不必太计较是谁说的):  我坐在从德国法兰克福飞往上海的飞机上。正是长途飞行中的睡眠时间,机舱已熄灯,我蹑手蹑脚地起身去厕所。座位离厕所比较远,我穿过很多排座位,吃惊地发现,我同时穿过了很多排 iPad。不睡觉玩

2013-08-23 00:23:48 2471

原创 C++码农要读的经典

今天刚大四,还在忙着找工作,读过的书不是很多,还有一些好书在读,还有一些书将来必读。读过的书

2013-08-18 14:43:36 5374 5

原创 贪心算法详解

贪心算法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。也就是说贪心对于算法的每一个决策点,每一次的选择,做一个当时看起来是最佳的选择。它并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解。

2013-08-18 13:32:43 7124

原创 POJ1051 木棍叠加

题目详见http://acm.hdu.edu.cn/showproblem.php?pid=1051 意思就是说如果机器要处理叠加的木棍。第一个木棍处理时候机器需要时间调整,如果下个叠加的木棍的长度和重量都大于等于底下的木棍,则机器不需要调整时间,直接叠加上面即可。否则机器需要重新调整,这需要时间。给你一堆木棍的长度和重量,希望你调整木棍的叠加顺序,使机器的调整时间最短。 很明显是贪心算法

2013-08-18 11:07:57 1925

原创 HDOJ1009 肥鼠的交易

题目详见http://acm.hdu.edu.cn/showproblem.php?pid=1009 这个问题很简单,类似多重背包问题,不过这个多重背包是可以拿一部分的,而不像之前说的背包问题。 很明显是贪心算法,首先根据JavaBean价值大小排序,然后根据手里的猫食来换取最大价值的JavaBean。每次都要判断是否够换一个整的,够的话就换,然后手里的猫食减少,不够换一个整的,那就换一部

2013-08-18 10:51:43 2750

原创 POJ2287 田忌赛马---贪心算法

田忌赛马题目详见http://poj.org/problem?id=2287 田忌赛马大家都听过,可是如果不是上中下等三种马,而是很多种马,就不仅仅是321的问题了。 这个很明显就是贪心算法,贪心算法的宗旨就是一个字------贪!有最小的代价换取最大的利益,我们都很喜欢。田忌当年请教孙膑的时候,孙膑对田忌说:“现在用您的下等马对付他们的上等马,拿您的中等马对付他们的下等马,拿您的上等

2013-08-18 10:24:41 8638

原创 如何证明程序的正确性?

什么样的程序才是正确的? 如何来保证程序是正确的? 测试?NO!采用测试方法确实可以发现程序中的错误,但却不能保证和证明程序中没有错误!先来看一些概念,有关程序功能的精确描述   前置断言:程序执行前的输入应满足的条件,又称为输入断言。 后置断言:程序执行后的输出应满足的条件,又称为输出断言。 程序规约:对程序所实现功能的精确描述,由程序的前置断言和后置断言两部分组成。程序设计一般过程:问

2013-08-13 00:41:05 7579

原创 平摊分析

我们经常在处理数据结构的时间复杂度的时候,大多数操作代价很低,可是由于某些个别操作的代价较高,导致最后求得时间复杂度的上界不是那么的紧凑。在平摊分析中,执行一系列数据结构操作所需要的时间是通过对执行的所有操作求平均而得出的。平摊分析可用来证明在一系列操作中,即使单一的操作具有较大的代价,通过对所有操作求平均后,平均代价还是很小的。平摊分析与平均情况分析的不同之处在于它不牵涉到概率。这种分析保证了在最坏情况下每个操作具有平均性能。

2013-08-12 00:07:52 5140 5

原创 如何扩充数据结构

我们在用数据结构的时候经常找不到适合的,树图堆栈这些根本满足不了我们的需要。有的时候我们不得不去设计一些数据结构,可是那会很麻烦,而且很难。所有我们在设计新的数据结构的时候经常拿现有的数据结构,然后在上边添加一些自己需要的功能,以便支持我们的新操作。这就是我们要说的数据结构的扩充。

2013-08-09 17:25:05 2381

原创 一步一步从二叉查找树学到红黑树

平衡是指所有的叶子的高度趋于平衡,更广义的是指在平衡二叉树上所有可能查找的均摊复杂度偏低。几乎所有平衡树的操作都基于树的旋转操作,通过旋转操作可以使得树趋于平衡。AVL树,红黑树,伸展树,Treap树等都是平衡二叉树。

2013-08-09 01:53:10 5228 2

转载 如何成为一名优秀的开发者

如何成为一名优秀的开发者?你觉得自己算是一名优秀的开发者吗?如果是的话,你有没有考虑过,作为一名优秀的开发者,应当具备哪些优秀的品质?原文作者Gregor Riegler 发表了一篇博文《What makes a great Developer》,文中提到了成就优秀开发者的九大品质,译文如下:一、激情(Passion) 开发者往往会因每一次成功完成任务后而感到欣喜,

2013-08-08 19:36:30 1356

转载 一道面试题

题目如下:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。”下面给出我的分析和解答。 为了得到两个棋子的最优策略,我们先简化问题,看看一个棋子的情况。如果手中只有一个棋子,为了得知临界层面,你只有一种选择:从2楼开始,一层一层地试,直到棋子被打碎,此时你站的楼层就是所求的临界层面

2013-08-05 11:09:05 1202

原创 哈希表详解

先来看一个TopK题目: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。     假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。 如何解答?Topk之前已经说过,

2013-08-05 01:03:42 5531

原创 背包问题详解

背包问题 背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的体积和价值,在限定的总体积内,我们如何选择,才能使得物品的总价值最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。相似问题经常出现在商业、组合数学,计算机复杂理论、密码学和应用数学等领域中。也可以将背包问题描述为决定性问题,即在总体积不超过V的前提下,总价值

2013-08-04 22:21:34 15353 2

原创 楼教主男人必解八题之 Coins 解题报告

楼教主男人必解八题之 Coins 解题报告 题目详见http://acm.hdu.edu.cn/showproblem.php?pid=2844 这个题目和POJ1742是一个题目,也是楼教主的男人八题之一。 说的是给出N种硬币的价值和个数,问可以取到1---M中的多少个值。这个很显然是和背包问题是一样的,略有一点点区别。 解题思路:就是把M当成背包体积总和,硬币的价值也是组成M的一部分,也

2013-08-04 22:20:52 5633

原创 HDOJ1069 猴子和香蕉【DP】

题目详见http://acm.hdu.edu.cn/showproblem.php?pid=1069 这个题目的大致意思就是香蕉挂在一定的一定的高度,不同的高度都有香蕉。给猴子很N个箱子,有长宽高,让猴子用这些箱子摞在一起爬到高处吃香蕉,看猴子的智商够不够高,吃到的香蕉多不多。箱子可以翻转,但是一个箱子要想摞在其他箱子上边,必须满足长和宽都要小于底下的箱子。箱子的数目是不限的,只是给出不同的箱

2013-08-02 00:27:45 2397

原创 HDOJ 2084 数塔【简单DP】

题目详见http://acm.hdu.edu.cn/showproblem.php?pid=2084题目的意思就是从上到下,找到一个路径加起来和是最大的。这个很简单,就是一个表达式的事,没什么可多想的。遍历是不现实的,也没必要。这个DP 很好想,是我做过最简单的DP了。表达式 if(array[i-1][j-1]>=array[i-1][j]) array[i][j]+=arra

2013-08-01 23:39:57 1962

原创 HDOJ 1058 Humble Numbers解题报告【DP】

Humble NumbersProblem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ...

2013-07-30 21:16:36 3081 1

转载 中国软件开发工程师之痛

在近期的一次会议上,有高层谈到之前在中国觉得自己做得很牛,但与美国同行接触后却发现与人家存在很大的差距,这一点我在外企工作时也有过同样的体会。真正与外国同行接触后才会知道什么是差距,在这篇文章中我从软件开发工程师的角度以“痛点”的形式来谈一谈我所认为的差距。技能之痛相当数量的软件开发工程师(后面简称为工程师)认为除了与编码相关的内容外,其他技能都不重要。在这种意识的引导

2013-07-29 12:54:03 1203

原创 求数组中最长递增子序列

求数组中最长递增子序列 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度。例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6。最长递增子序列Lis的长度是4; 求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],…,b[m](0 … ,使得array[b[0]]…。 真正求Lis是有难度的,对于每一

2013-07-23 14:05:37 2970

原创 求数组的连续子数组之和的最大值(一维二维)

求数组的连续子数组之和的最大值 输入一个N个元素的整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。 例如输入的数组为-9  -3  -2  2  -1  2  5  -7  1  5,和最大的子数组为2  -1  2  5。因此输出为该子数组的和8。 可是如果都是负数的话,要返回0?还是返回最小的负数?,这个数时

2013-07-22 17:34:25 5114

原创 寻找最小的K个数

“五分化中项的中项”划分法: 1 将输入数组的N个元素划分为[n/5]组,且至多只有一个组有剩下的n mod5组成。 2 寻找这个[n/5]组中没一组的中位数:首先对每组的元素进行插入排序,排序后选出中位数。 3 对第二步找出的[n/5]个中位数,继续递归找到其中位数x。 4 按中位数的中位数x进行partition划分,然后就是select算法。可以证明的是该划分可以在最坏情况下保证O(n)的时间复杂度。

2013-07-19 10:30:04 3849 1

转载 锤子和钉子

By 刘未鹏(pongba) | http://blog.csdn.net/pongba 消息:由于 CSDN Blog 一直没有支持全文 Feed (尽管连新浪博客都支持全文 feed ,而且同类博客 cnblogs 也支持全文 feed ——其实完全可以像 cnblogs 一样在 feed 中放广告,两全其美)。受不了这个限制,因此利用 Yahoo Pipes 给博客做了全文

2013-07-14 22:17:56 1252

转载 什么是你的不可替代性和核心竞争力

什么是你的不可替代性和核心竞争力 By 刘未鹏(pongba) | http://blog.csdn.net/pongba我虽不是经济学专业,但是翻开任何一本经济学的教材,或者直接翻开 wikipedia 的 economics 条目,都会看到物以稀为贵这条铁律。人才作为资源的一种,也是同样的道理。而稀缺性,换种说法也可以叫做不可替代性。一种资源越是稀缺,不可替代性就越强。

2013-07-14 21:27:26 1173

原创 求1-N中十进制正整数1的个数

给你一个十进制的正整数N,求1-N所有数中出现“1”的的数目。比如 N=2: 1    2 ,1的个数的1. N=5: 1   2  3  4  5  ,1的个数是1。 N=12:1  2   3  4  5  6  7 8   9  10  11  12 ,1的个数是5. 希望你能写一个函数F(N),返回1-N之间出现1的个数,F(12)=5;如何求得? 遍历?对,

2013-07-14 12:35:18 2049

原创 如何让CPU的占用率曲线听你指挥

如何让CPU的占用率曲线听你指挥 写一个程序让用户来决定任务管理器的Cpu占用率。 如何让CPU的占用率曲线固定在50%,保持一条直线? 拿到这个问题不要着急,好好想一下。Think  about  it。什么是占用率?在一个Cpu的刷新周期里Cpu的使用与总的资源的百分比,那如何让CPU一会忙,一会闲呢?想一想,我们平时鼠标的移动都会造成Cpu曲线的变化,忙的时候我们可以执行空的循环,可

2013-07-11 10:42:05 1173

原创 中国象棋将帅问题

将帅问题 俗话说的好,将帅不见面,见面分胜负。残局之中只有将帅,如何保持僵局?假设A表示将,B表示帅。如何输出他们的合法位置?请写一个程序来输出。 当你看到这个题目的时候,可能感觉很简单,无非是两个个for循环而已,只要A、B不在同一列即可。可是你如何表示表示棋盘,如何表示棋局呢?很麻烦?是吧 哈哈,其实这根本不是重点,棋局什么的都不重要,重要的是A、B的合法位置。这个时候

2013-07-11 10:35:10 1981

排序算法整理大全

各种排序算法分析,有图解,有分析,伪代码,源代码。挺全的,都是自己整理的。原文地址是http://blog.csdn.net/liangbopirates/article/details/9292379 欢迎批评指正

2013-08-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除