文章分类 - 算法/数据结构
摘要:有时候在网吧或别人的电脑上写了一些c/c++程序,却苦于没有安装编译器,无法编译和调试,非常的不方便。这时候我们可以借助在线编译系统来进行c/c++代码的编译。仅仅是编译的话,acm oj是不太合适的。下面分享下找到一份关于在线编译系统的资料。1、http://codepad.org/推荐星级:★★★★是否需注册:否(注册的话也很快,几秒钟而已)优点:网页界面简洁,一目了然,适合手机浏览器。且支持C,C++,D,PHP,PYTHON,Perl,Ruby等十几种编程语言,非常强大。查看执行结果时,高亮显示代码。缺点:有时点击提交按钮后,给出一个出错页面,需多次提交才给出结果。另外不具有交互性,且
阅读全文
摘要:经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧经典排序算法 - 快速排序Quick sort经典排序算法 - 桶排序Bucket sort经典排序算法 - 插入排序Insertion sort经典排序算法 - 基数排序Radix sort经典排序算法 - 鸽巢排序Pigeonhole sort经典排序算法 - 归并排序Merge sort经典排序算法 - 冒泡排序Bu
阅读全文
摘要:对于a的n次幂求解这个问题,不少人看到后都觉得没有什么内容吧!我第一次想到这个问题也觉得没有什么内容,但是后来仔细想想,里面还真是有学问哦!想想看如果我们求a8,有以下两种方法:1)a8= a * a * a * a * a * a * a * a需要计算7次乘法2)a8= (a * a) * A * A(其中A = a * a)需要计算3次乘法对于这么简单的一个算法计算步骤差别的差别是很大的算法的思想:一般的对于a(2x + b)= a2x* ab,所以就有1)b = 0时:a2x+ b= (ax)2;2)b = 1时:a2x+ b= (ax)2* a;对于an,先把n的二进制表示写出,那么
阅读全文
摘要:“设计良好的函数往往比较小,而过大函数的设计往往一塌糊涂,或者存在很大的优化空间。”也许你认为讨论函数的大小没有必要,原因是函数设计的本质是内聚,它的大小只是它的表现形式。而上面的原因有必要让我们讨论一下函数的大小问题。我对函数的核心思路:我提出代码最小处理单元的概念:一个基本操作(赋值,比较等),一个函数调用(包括调用后判断返回值进行判断)都看成一个最小处理单元。那么,一个函数,最小处理单元合理的个数范围在7以内。如果超过了7,你就要考虑把他们拆分成多个函数了(为什么是7?人同时能够处理的信息不超过7个)。最小数目没有限制,即便是只有1个,也有存在的必要。在下面的情况下我会将函数拆分为更小的
阅读全文
摘要:这是一篇很老的文章,但非常有趣。原标题“超经典:什么叫网关”。 计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。 但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远 的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单...
阅读全文
摘要:例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。思路:不可避免的是遍历第一个字符串,如果遍历一个字符,都需要去第二个字符串中查找其存不存在,那么复杂度会是O(nm),当然由于字符数有限,所以m是个常量。关于查找速度最快的当然是hash表,对于8位字符,size=2^8足矣。关于删除字符,后面的字符要往前移,如果每删除一个就移一次,O(n^2)这复杂度实在太高,仅仅用快慢指针就可以搞定,这个方法非常有用,比如求解循环链表。初始化:快慢指针指向第一个字符循环:如果快指针指的是不需要的字符,将值赋给慢指针后,快慢指针同时
阅读全文
摘要:1.给出两个数,用户再指定操作符,要求计算结果,这实现起来很容易; 2.多个数,但只涉及同一优先级的操作符,做起来也很容易; 3.多个数,不同优先级的操作符,怎么办呢? 想想就头痛,不过还好前人已经为我们留下了很多解决这个问题的方法。通过逆波兰表达式是解决这个问题很流行的一种方式。 一、什么是逆波兰表达式? 我们一般使用的表达式,形如1+2*3,被称为中缀表达式,转换为后缀表达式即为:1 2 3 * +,而后缀表达式也就是我们所说的逆波兰表达式。 逆波兰表达式计算起来非常方便:遇操作数入栈,遇操作符则弹出栈顶两个元素进行计算并将结果推入栈中,直至结束。上面的表达式的...
阅读全文
摘要:其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做回文串问题中时比较烦的地方。这个算法还有一个很好的地方就是充分利用了字符匹配的特殊性,避免了大量不必要的重复匹配。 算法大致过程是这样。先在每两个相邻字符中间插入一个分隔符,当然这个分隔符要在原串中没有出现过。一般可以用‘#’分隔。这样就非常巧妙的将奇数长度回
阅读全文
摘要:要求:根据输入的数字n,如:3,5,7...以矩阵显示n行n列数,这些数由1~n*n构成,要求矩阵的每行每列及对角线上n个数之和相等预备知识:在距阵中,1在第一行正中,随后的数字应放到上一个数字的右上方方格中,如果向上不行,就放到该列的最下方格子;如果向右不行,就放到该行的最左边;如果都不行,就放到上一个数字的正下方;如果目标格子中已经有数字,也放到上一个数字的正下方思路:1) 使用2维数组预备存储1~n*n这些数字2) 1是放到第一行正中的,所以其索引号是:[0][(n-1)/2]3) 随后的数字,其索引号原则如下1> num的行索引为 num-1 的 (行索引-1) , num的列索
阅读全文
摘要:求一个点集的最大空心圆,用基本的枚举可以很容易想到O(n^4)的方法,但是由于计算几何高级算法Voronoi图的存在,求最大空心圆的复杂度只需要O(n*logn)Voronoi图是很复杂的东东,不过我和它还挺有缘的,第一次见面是在高二,《金牌之路——高中计算机竞赛解题指导》上面看到的,由于对几何的热爱当时还真学了,后来才知道这么偏僻的算法几乎不会考。昨晚复习了一晚上,也只是掌握了一种用双向循环链表维护Voronoi多边形的方法、估计是一种比较基本的方法。Voronoi图的定义:1.设p,q是平面上的两个点,L是pq的中垂线,L将平面分为两个部分【L左】和【L右】,在【L】左内的点r有特性|pr
阅读全文
摘要:作者:钱春升、 王霄峥、 石翠仙 单位:河北行政学院 转载:电子测量技术 发布时间:2008-11-25一、应用概述 在移动通信行业中已经开始广泛应用各种GIS系统进行各种移动通信设备(如基站、直放站、MTU等)的管理。网络规划设计是移动通信网的建设中极其重要的环节,它对于网络的建设成本与网络建立后的运行质量有重要的影响。[3]在无线网络优化工作中,人们常结合GIS技术更加清楚地了解基站天线在地理位置上的分布情况,极大地方便了无线网络的规划工作。<!--more--> 传统的GIS应用方式只是简单地将移动通信设备显示为地图中的点,只能提供用户对于这些设备的简单定位功能,不能深入地挖
阅读全文
摘要:黑体字为本人添加.Gensun:Google的不少题,只要足够机灵,还是挺菜的。另外,所给答案很不一定是官方答案,老孙猜想为网友给出,仅供观赏。哪个比较权威?这个问题很开放。要本人给答案的话:gensun的。欢迎补充更权威的。<!--more-->1) 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情。村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情。村里的规矩不容忍通奸。任何一个妻子,一旦能证明自己的男人偷情,就必须当天把他杀死。村里的女人全都严格照此规矩办事。一天,女头领出来宣布,村里至少有一个丈夫偷情。请问接下来会发生什么
阅读全文
浙公网安备 33010602011771号