算法
onlyonename
这个作者很懒,什么都没留下…
展开
-
Fibonacci数列性质的组合证明
转自:http://www.kuqin.com/math/20120128/317605.html 数列 1, 1, 2, 3, 5, 8, 13, 21, 34, … 叫做 Fibonacci 数列。这个数列有很多神奇的性质,其中一个性质是,每一个 Fibonacci 数的平方与它前后两个 Fibonacci 数的乘积一定正好相差 1 。具体地说,如果把第 n 个 Fibonacci 数转载 2012-04-05 11:01:34 · 1156 阅读 · 0 评论 -
哈希表质数数列
转自:http://www.cnblogs.com/bovine/archive/2012/04/25/2469740.html最近我在做一个项目,其中要用到一个数据结构——Hash Table(哈希表),以前只有理论知识,现在实却发现很不简单,所以写下来和大家共分享。我们知道,哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果Key一转载 2012-05-05 13:02:43 · 1339 阅读 · 0 评论 -
线段树入门
转自:http://hi.baidu.com/alpc62/blog/item/469edeca0043e382c8176875.html好久没写过算法了,添一个吧,写一个线段树的入门知识,比较大众化。上次在湖大,其中的一道题数据很强,我试了好多种优化都TLE,相信只能用线段树才能过。回来之后暗暗又学了一次线段树,想想好像是第三次学了,像网络流一样每学一次都有新的体会。把问转载 2012-05-06 13:27:06 · 433 阅读 · 0 评论 -
字典树
转自:http://book.51cto.com/art/201008/220537.htm8.38 什么是字典树字典树(Trie)和后缀树是单词处理的最流行数据结构。字典树于1960年由Fredkin作为搜索和排序数字数据的有效方法引入。名称Trie来自Information Retrieval(信息检索),这是一种特殊类型的树,它存储字符串并使其能够快速检索。如果我们仔细观察转载 2012-05-11 15:51:35 · 813 阅读 · 0 评论 -
旋转卡壳算法
转自:http://www.cppblog.com/staryjy/archive/2009/11/19/101412.html 旋转卡壳可以用于求凸包的直径、宽度,两个不相交凸包间的最大距离和最小距离等。虽然算法的思想不难理解,但是实现起来真的很容易让人“卡壳”。 拿凸包直径(也就是凸包上最远的两点的距离)为例,原始的算法是这样子: Compute th转载 2012-05-12 16:21:42 · 855 阅读 · 0 评论 -
等概率随机函数的实现
转自:http://blog.csdn.net/hackbuteer1/article/details/7486748题目:已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。解决思路:可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然后调用k(转载 2012-05-12 17:08:24 · 576 阅读 · 0 评论 -
随机数范围扩展方法总结
转自:http://blog.csdn.net/hackbuteer1/article/details/7486704题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上转载 2012-05-11 21:15:51 · 536 阅读 · 0 评论 -
寻找最远点对
转自:http://blog.csdn.net/hackbuteer1/article/details/7484746#reply问题给定平面上N个点的坐标,找出距离最远的两个点。分析类似于“最近点对问题”,这个问题也可以用枚举的方法求解,时间复杂度O(n^2)。“寻找最近点对”是用到分治策略降低复杂度,而“寻找最远点对”可利用几何性质。注意到:对于平面上有n个点,这一对最远点转载 2012-05-12 16:18:31 · 628 阅读 · 0 评论 -
N*N匹马,N个赛道,求出最快N匹马的解法
转自:http://blog.csdn.net/hackbuteer1/article/details/7481342入门级:81匹马,9个赛道,不计时,最少要赛几场可以求出最快四匹马?首先:分为9组分别进行比赛后得到每一组的比赛名次,比赛场次:9;然后:将9组的每组第一名比赛,得到第一名,肯定是所有马的第一名;比赛场次:1最后:剩下马中有资格角逐前四名的马有A2、A3、A4、B1转载 2012-05-12 20:12:31 · 827 阅读 · 0 评论 -
Catalan数——卡特兰数
转自:http://blog.csdn.net/hackbuteer1/article/details/7450250Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数。悲剧啊,现在整理一下一、Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n转载 2012-05-13 09:29:06 · 1540 阅读 · 0 评论 -
数学之美 二十四 从全球导航到输入法——谈谈动态规划
转自:http://www.kuqin.com/math/20081015/22725.html今年九月二十三日,Google、T-Mobile 和 HTC 宣布了第一款基于开源操作系统 Android 的 3G 手机,其中一个重要的功能是利用全球卫星定位系统实现全球导航。这个功能在其它手机中早已使用,并且早在五六年前就已经有实现这一功能的车载设备出售。其中的关键技术只有两个:第一是利用卫星定转载 2012-05-01 21:27:58 · 2612 阅读 · 0 评论 -
数学之美系列九:如何确定网页和查询的相关性
转自:http://www.kuqin.com/math/20071204/2783.html[我们已经谈过了如何自动下载网页、如何建立索引、如何衡量网页的质量(Page Rank)。我们今天谈谈如何确定一个网页和某个查询的相关性。了解了这四个方面,一个有一定编程基础的读者应该可以写一个简单的搜索引擎了,比如为您所在的学校或院系建立一个小的搜索引擎。]我们还是看上回的例子,查找转载 2012-05-01 14:28:04 · 376 阅读 · 0 评论 -
数学之美系列五:布尔代数和搜索引擎的索引
转自:http://www.kuqin.com/math/20071204/2779.html数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引[建立一个搜索引擎大致需要做这样几件事:自动下载尽可能多的网页;建立快速有效的索引;根据相关性对网页进行公平准确的排序。我们在介绍 Google Page Rank (网页排名) 时已经谈到了一些排序的问题,这里我们谈谈索引问题,以后转载 2012-05-01 13:12:15 · 502 阅读 · 0 评论 -
基于用户投票的排名算法(三):Stack Overflow
转自:http://www.kuqin.com/algorithm/20120311/318806.html上一篇文章,我介绍了Reddit的排名算法。它的特点是,用户可以投赞成票,也可以投反对票。也就是说,除了时间因素以外,只要考虑两个变量就够了。但是,还有一些特定用途的网站,必须考虑更多的因素。世界排名第一的程序员问答社区Stack Overflow,就是这样一转载 2012-04-30 15:04:24 · 457 阅读 · 0 评论 -
基于用户投票的排名算法(四):牛顿冷却定律
转自:http://www.kuqin.com/algorithm/20120317/318994.html这个系列的前三篇,介绍了Hacker News,Reddit和Stack Overflow的排名算法。今天,讨论一个更一般的数学模型。这个系列的每篇文章,都是可以分开读的。但是,为了保证所有人都在同一页上,我再说一下,到目前为止,我们用不同方法,企图解决的都是同一转载 2012-04-30 15:19:28 · 482 阅读 · 0 评论 -
基于用户投票的排名算法(一):Delicious和Hacker News
转自:http://www.kuqin.com/algorithm/20120307/318638.html互联网的出现,意味着"信息大爆炸"。用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依次排列,并转载 2012-04-30 14:08:59 · 498 阅读 · 0 评论 -
基于用户投票的排名算法(二):Reddit
转自:http://www.kuqin.com/algorithm/20120307/318639.html上一次,我介绍了Hacker News的排名算法。它的特点是用户只能投赞成票,但是很多网站还允许用户投反对票。就是说,除了好评以外,你还可以给某篇文章差评。Reddit是美国最大的网上社区,它的每个帖子前面都有向上和向下的箭头,分别表示"赞成"和"反对"。用户点击进行转载 2012-04-30 14:34:00 · 478 阅读 · 0 评论 -
基于用户投票的排名算法(五):威尔逊区间
转自:http://www.kuqin.com/algorithm/20120411/319867.html迄今为止,这个系列都在讨论,如何给出"某个时段"的排名,比如"过去24小时最热门的文章"。但是,很多场合需要的是"所有时段"的排名,比如"最受用户好评的产品"。这时,时间因素就不需要考虑了。这个系列的最后两篇,就研究不考虑时间因素的情况下,如何给出排名。转载 2012-04-30 18:44:02 · 523 阅读 · 0 评论 -
基于用户投票的排名算法(六):贝叶斯平均
转自:http://www.kuqin.com/algorithm/20120415/319958.html上一篇介绍了"威尔逊区间",它解决了投票人数过少、导致结果不可信的问题。举例来说,如果只有2个人投票,"威尔逊区间"的下限值会将赞成票的比例大幅拉低。这样做固然保证了排名的可信性,但也带来了另一个问题:排行榜前列总是那些票数最多的项目,新项目或者冷门的项目,很难有出头机会,排转载 2012-04-30 19:02:29 · 699 阅读 · 0 评论 -
棋盘覆盖问题
转自:http://www.cppblog.com/tanky-woo/archive/2012/03/27/135777.html虽然这个问题已经在网上被讨论遍了,但是最近从新拾起算法,感觉有必要夯实一下基础。棋盘覆盖问题:首先大致描述一下题目:在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方转载 2012-04-30 19:29:29 · 877 阅读 · 0 评论 -
数学之美系列十二:余弦定理和新闻的分类
转自:http://www.kuqin.com/math/20071204/2786.html余弦定理和新闻的分类似乎是两件八杆子打不着的事,但是它们确有紧密的联系。具体说,新闻的分类很大程度上依靠余弦定理。Google 的新闻是自动分类和整理的。所谓新闻的分类无非是要把相似的新闻放到一类中。计算机其实读不懂新闻,它只能快速计算。这就要求我们设计一个算法来算出任意两篇新闻的相似性。为了转载 2012-05-01 18:41:29 · 514 阅读 · 0 评论 -
数学之美系列十三:信息指纹及其应用
转自:http://www.kuqin.com/math/20071204/2787.html任何一段信息文字,都可以对应一个不太长的随机数,作为区别它和其它信息的指纹(Fingerprint)。只要算法设计的好,任何两段信息的指纹都很难重复,就如同人类的指纹一样。信息指纹在加密、信息压缩和处理中有着广泛的应用。我们在图论和网络爬虫一文中提到,为了防止重复下载同一个网页,我们需要在转载 2012-05-01 19:02:57 · 429 阅读 · 0 评论 -
实习生招聘笔试
转自:http://blog.csdn.net/hackbuteer1/article/details/7438986#reply1、计算表达式x6+4x4+2x3+x+1最少需要做()次乘法A、3 B、4 C、5 D、6第一次乘法:x^2,第二次乘法:x^4=转载 2012-05-13 12:36:40 · 676 阅读 · 0 评论 -
用位运算实现四则运算之加减乘除
转自:http://blog.csdn.net/hackbuteer1/article/details/7390093听同学百度二面中,不准用四则运算操作符来实现四则运算。一想就想到了计算机组成原理上学过的。位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。加法运算:[cpp] view plaincopy转载 2012-05-14 09:35:05 · 871 阅读 · 0 评论 -
标准输入输出函数%[]和%n说明符的使用方法
转自:http://blog.csdn.net/megaboy/article/details/514260 标准输入输出函数scanf具有相对较多的转换说明符,它常常作为入门级函数出现在各种教材中。但奇怪的是,[]和n这两种都为c89/c99所规定的标准说明符却鲜少在大多数教材中出现。虽然[]和n说明符的使用频率不及其它说明符,但两者在程序设计中的作用仍然不可小视,尤转载 2013-06-03 23:11:00 · 528 阅读 · 0 评论 -
Piotr's Ants
转自:http://www.cnblogs.com/acm-bingzi/archive/2013/07/18/3198338.htmlTime Limit: 2 seconds Piotr likes playing with ants. He has n of them on a horizontal pole L cm long. Each a转载 2013-07-22 23:26:56 · 833 阅读 · 0 评论 -
二叉树迭代器算法
转自:http://coolshell.cn/articles/9886.html二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。假设二叉树结点定义如下:123456// C++struct Node { int value; Node *left; Node *right;}中序递归遍历算法:12345678910/转载 2013-07-21 14:00:10 · 732 阅读 · 0 评论 -
BloomFilter简介
转自:http://blog.csdn.net/yanook/article/details/6576857BloomFilter Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例 为了说明Bloom转载 2013-08-04 10:15:46 · 737 阅读 · 0 评论 -
桶排序
转自:http://hxraid.iteye.com/blog/647759从《基于比较的排序结构总结 》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设 ,来避免绝大多数的“比较”操作。桶排序就是这样的原理。转载 2013-09-07 15:48:06 · 940 阅读 · 0 评论 -
堆排序
转自:http://blog.csdn.net/jiqiren007/article/details/5972735对于堆排序来说,首先需要做的是要建堆,建堆是一个不断调整堆的过程,能够在线性时间内完成。堆排序的过程1、建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调转载 2013-09-06 22:51:31 · 633 阅读 · 0 评论 -
找中位数
转自:http://hi.baidu.com/wenzheng38/item/c645493bf695f68df4e4adf8中位数指的是一列数按照从小到大排列,然后取中间的那个(如果数列个数是奇数,取中间的,如果是偶数,取中间两个的平均数)。给定的是无序的数组,如何快速的找到中位数?分析:首先给数组进行排序,可以快排或者堆排,然后去中位数。如果是在内存有限转载 2013-09-06 22:52:28 · 1419 阅读 · 0 评论 -
折半插入排序
转自:http://baike.baidu.com/link?url=C5myrHWbRekUR8BUJJMI9clWhAu7-tI4xZw4GyNSHLaDKaSxIG-i9ogXrgfqj0bMsy85_kcFayMPFbRJbrsAZq基本概念折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将转载 2013-09-08 10:01:04 · 779 阅读 · 0 评论 -
IT名企面试系列之腾讯笔试题
转自:http://jingyan.baidu.com/article/2d5afd69b7b5f785a2e28eb0.html这里,我给大家分享篇笔试题,大家来看看自己会做几道啊,如果都会的话,恭喜你,赶快去面试吧。。。。。。。问题1买200返100优惠券,实际上折扣是多少?2转载 2013-09-07 16:56:32 · 1022 阅读 · 0 评论 -
表驱动用法介绍(调试网卡驱动时遇到)
转自:http://blog.csdn.net/yanook/article/details/6589465前一段时间调试无线网卡驱动时,在probe网卡时,不同的网卡有不同的编号,根据编号来发现应该调用的probe函数,当初没有太明白内核驱动是怎么实现的,今天无意中发现了表驱动这种方法,顿时恍然大悟,在此做个笔记,以免以后忘记。一下内容为转载: 函数指针的转载 2013-06-12 22:41:45 · 486 阅读 · 0 评论 -
随机生成零到n之间的m个数
转自:http://www.verydemo.com/demo_c161_i80057.html随机生成0到n之间的m个数如何用随机数生成0到n之间的m个不重复的数1、最直接的方法就是先随机生成一个0到n之间的数,判断这个数是否已被选上,如果以前没选过,则选上,如果以前已选,则丢弃void common(int n,int m){ int * ran转载 2013-06-02 22:41:27 · 967 阅读 · 0 评论 -
百度笔试题目
转自:http://blog.csdn.net/liuzhanchen1987/article/details/79879851)此题10分 对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=6402373705728000,尾部连续0的个数是3。 (不用考虑数值超出计算机整数界限的问题) [cpp] view pl转载 2013-05-12 23:33:13 · 565 阅读 · 0 评论 -
天平秤重问题
转自:http://blog.csdn.net/hackbuteer1/article/details/7358704[问题描述]: 有一只天平和N只砝码,如何设计这N只砝码,才能使这天平能够连续秤出的重量最大?假设砝码的最小单位为1克,秤物时物品放在天平的左边,砝码可以放在右边也可以放在左边,不管放在哪一边只要天平能够平衡就行,物品的重量应是右边砝码总重量减去左边砝码的重量。输入转载 2012-05-14 10:58:42 · 1435 阅读 · 0 评论 -
动态规划——砝码称重
转自:http://blog.csdn.net/clearriver/article/details/4222652问题描述:设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重≤1000g),要求:输入:a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个)输出:Total=N (N表示转载 2012-05-14 12:56:34 · 2115 阅读 · 0 评论 -
百度最新面试题集锦
转自:http://blog.csdn.net/hackbuteer1/article/details/73489681、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2转载 2012-05-14 16:58:42 · 770 阅读 · 0 评论 -
如何证明素数有无穷多个
转自:http://blog.csdn.net/pathuang68/article/details/7566859假若素数只有有限多个,设最大的一个是P,从2到P的全体素数是:2,3,5,7,11……,P。所有的素数都在这里,此外再没有别的素数了。 现在,我们来考察上面从2到P的全体素数相乘、再加上1这个数,设它是A,即A=2×3×5×转载 2012-06-19 21:13:22 · 1039 阅读 · 0 评论