上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 一道阿里的笔试题目(大意):一个平面空间内,使用一个圆形将空间划分,例如一个圆形将空间划分为两个区域(包括圆外面的),两个圆形最多可以划分4个区域;三个圆最多可以划分8个,4个圆可最多划分14个;。。。。。一开始,思路:由新增的圆去切割现有的区域,考虑如何才可以切割最多区域。但是,当区域成倍的增加,图形过于复杂,搅乱思路;忽想编程之美的一道题目“光线切割区域”的思路;考虑其相交的点入手。首先考虑两个圆最多只能有两个交点;假设现有 n-1个圆,区域数为 f(n-1);现在填多一个圆进去,那么这个圆最多和所有的(n-1个)圆最多就有2*(n-1)个交点,即是说:这个圆被2*(n-1)个交点分成了2 阅读全文
posted @ 2013-05-03 15:26 legendmaner 阅读(1530) 评论(0) 推荐(1) 编辑
摘要: 题目描述:给定一个源串和目标串,能够对源串进行如下操作: 1.在给定位置上插入一个字符 2.替换任意字符 3.删除任意字符写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000。此题反复出现,最近考的最多的是百度和Google的笔试面试经常考察。D(n,m)即为字符串X[0...n-1]与Y[0...m-1]之间的最小编辑距离 1 #include <iostream> 2 #include <assert.h> 3 #include <stdlib.h> 4 5 int func31(char a[], int n 阅读全文
posted @ 2013-05-02 09:40 legendmaner 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 原题是这样的:一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序。比如: input: 1,7,-5,9,-12,15 ,ans: -5,-12,1,7,9,15 。且要求时间复杂度O(N),空间O(1) 。一道曾经做过n次的题目,当时做时没有“要求不改变原来的正负数之间相对顺序”条件,几天都没有做些虐心的算法题了,被虐贯了%>_<%一看题目先把去掉那个附加条件的经典题目扫一遍。思想简单利用快排的分类:简单到都不愿写code: 1 void func30(int a[], int n) 2 { 3 int i, j, tmp; 4 5 阅读全文
posted @ 2013-04-22 10:39 legendmaner 阅读(1799) 评论(0) 推荐(0) 编辑
摘要: 题目:选择题:在如下8*6的矩阵中,请计算从A移动到B一共有多少走法?要求每次只能向上或向右移动一格,并且不能经过P。()BPAA 492 B 494 C 496 D 498看一次忘一次,决定这次再次理解一便,并更加形象的理解:试想:题目若是m*n表格里面,从A到B,不管其如何走,必然要经过m+n个格子(这个就不需要证明了吧)。然后这m+n个格子里面只有两种状态,向上或向右;而且为到达B,必须有n个向右走,m个向上走;如此,从这m+n个格子里选择n个向右走就ok了(剩下的就向上走,当然可以选择m向上走,剩下向右走)。这样可能会比原解释的要更加清楚些~其他的,参考原解释:附原解释:解答:这是有关 阅读全文
posted @ 2013-04-18 21:47 legendmaner 阅读(1545) 评论(0) 推荐(1) 编辑
摘要: 题目大意:给出一个柱形统计图(histogram), 它的每个项目的宽度是1, 高度和具体问题有关。 现在编程求出在这个柱形图中的最大面积的长方形。例如:7 2 1 4 5 1 3 37表示柱形图有7个数据,分别是 2 1 4 5 1 3 3, 对应的柱形图如下,最后求出来的面积最大的图如右图所示。一开始又是各种挫计O(n^2),隐约感觉可以利用以前的某道题目的思想,然后,然后还是记不起来。。。各种整之后,还是省点时间吧~ ⊙﹏⊙b ;关键字:“单调栈”感觉凉风一阵,什么情况,从没有见过的数据结构。赶紧上google百度之:定义:单调栈,顾名思义就是说栈内的元素,按照某种方式排序下,必须是单调 阅读全文
posted @ 2013-04-18 16:06 legendmaner 阅读(2566) 评论(0) 推荐(0) 编辑
摘要: 《编程之美》4.7节描述了蚂蚁爬杆问题,把所有具体数字都表示成字母后变为形如如下形式的问题:有一根长为L的平行于x轴的细木杆,其左端点的x坐标为0(故右端点的x坐标为L)。刚开始时,上面有N只蚂蚁,第i(1≤i≤N)只蚂蚁的横坐标为xi(假设xi已经按照递增顺序排列),方向为di(0表示向左,1表示向右),每个蚂蚁都以速度v向前走,当任意两只蚂蚁碰头时,它们会同时调头朝相反方向走,速度不变。编写程序求所有蚂蚁都离开木杆需要多长时间。该问题是经典问题了,有O(N)的解法。扩展问题现列出如下:第i只蚂蚁什么时候走出木杆?所有蚂蚁从一开始到全部离开木杆共碰撞了多少次?第k次碰撞发生在哪个时刻?哪个位 阅读全文
posted @ 2013-04-18 10:28 legendmaner 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 编程之美的中的课后习题:问题:已知集合S有n个元素x1,x2,….xn,求其中最大的和第二大的元素。1、朴实的遍历寻找。寻找最大数的比较次数为n-1,第二大为n-2次,总次数2n-3;2、分治法。分析:我们要尽可能的减少比较次数,为简单起见,设n为2的幂。分治:把S分成大小为n/2的两个子集P和Q。如果现在直接进行归纳,则假设已知P和Q中的最大和第二大的元素,分别记为p1,p2和q1,q2,然后查找S中的最大和第二大的元素。很明显,两次比较足以找到S中的这两个元素。第一次比较最大数p1和q1,此时得到一个新的第二大的数,这个数与原来的第二大的数(P或Q中的一个)比较一次,记为所求(比较过程见下 阅读全文
posted @ 2013-04-16 09:18 legendmaner 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 时间限制:2 秒内存限制:32 兆特殊判题:否题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输入:输入有多组数据。每组数据仅包括1个整数S(S<=1,000,000)。如果S为负数时,则结束输入。输出:对应每组数据,若不存在和为S的连续正数序列,则输出“Pity!”;否则,按照开始数字 阅读全文
posted @ 2013-04-15 15:24 legendmaner 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 时间限制:1 秒内存限制:32 兆特殊判题:否题目描述:统计一个数字在排序数组中出现的次数。输入:每个测试案例包括两行:第一行有1个整数n,表示数组的大小。1<=n <= 10^6。第二行有n个整数,表示数组元素,每个元素均为int。第三行有1个整数m,表示接下来有m次查询。1<=m<=10^3。下面有m行,每行有一个整数k,表示要查询的数。输出:对应每个测试案例,有m行输出,每行1整数,表示数组中该数字出现的次数。样例输入:81 2 3 3 3 3 4 513样例输出:4方案:1、对于每一个需要查找的数在排好序数组中二分查找,如果存在,定位好之后向前向后查找出现个数, 阅读全文
posted @ 2013-04-14 22:34 legendmaner 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,有一个数组为Array[0..n] 其中有元素a[i],a[j].如果 当i<j时,a[i]>a[j],那么我们就称(a[i],a[j])为一个逆序对。在数组{7,5,6,4}中一共存在5对逆序对,分别是(7,6),(7,5),(7,4),(6,4),(5,4)。花了很长时间想还是没有想出来怎么做,怎么也不服气。。。最后还是折服了,上网查。。。才看到文章的 “排序算法汇总->归并排序”这句话的时候,兴奋不已(你妹啊!分治法~)。。放弃继续看下去 阅读全文
posted @ 2013-04-13 12:15 legendmaner 阅读(247) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页