算法与数据结构
文章平均质量分 72
guhaoxin
破碎吧,镜花水月
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ACM算法书籍推荐收藏
1. CLRS 算法导论算法百科全书,只做了前面十几章的习题,便感觉受益无穷。2. Algorithms 算法概论短小精悍,别据一格,准经典之作。一个坏消息: 同算法导论,该书没有习题答案。好消息:习题很经典,难度也适中,只需花点点时间自己也都能做出来。不好也不坏的消息:我正在写习题的答案,已完成前三章,还剩九章约二百道题,顺利的话二个月之后发布。另有中文版名《算法概论》,我没看过,不知道翻译得怎...原创 2009-12-10 21:06:30 · 222 阅读 · 0 评论 -
Jazzy--一种新的拼写检查器API(Java平台)
计算机擅长执行快速搜索操作,可以根据给定的搜索词,对大量存储的信息快速进行搜索。但是,拼写检查应用程序所要求的搜索能力,不仅仅是正确的字符串匹配。 在这篇文章中,我将介绍搜索算法的一些历史,包括语音匹配算法(比如 Soundex 和 Metaphone ),字符串相似性类型(例如动态编程算法)。我会解释这些算法对于拼写检查来说各自的优势与不足,然后介绍最后一个变种-- ...原创 2010-01-03 22:40:57 · 3655 阅读 · 0 评论 -
Soundex算法
Soundex 是一种 20 世纪在美国人口普查中归档姓氏的方法。它把听起来相似的姓氏归在一起,使得在即便错误拼写的情况下调查者仍能查找到。 Soundex 今天仍然因差不多的原因被应用着,当然现在用计算机数据库服务器了。 大部分的数据库服务器都有 Soundex 函数。 Soundex算法是一种语音算法,利用英文字的读音计算近似值,值由四个字符构成,第一个字符为英文字母,后三个为数字。在...原创 2010-01-03 19:49:31 · 429 阅读 · 0 评论 -
POJ1191--棋盘分割
棋盘分割Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 4513 Accepted: 1591Description将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有...原创 2009-12-30 11:09:31 · 197 阅读 · 0 评论 -
动态规划
Dynamic programmingFrom Wikipedia, the free encyclopedia In mathematics and computer science, dynamic programming is a method of solving complex problems by breaking them down into simpler steps...原创 2009-12-29 22:06:22 · 740 阅读 · 0 评论 -
棋盘覆盖算法
在一个2^k x 2^k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 这里我们用分治法解决该问题。分治法是把一个规模很大的问题分解为多个规模较小、类似的子问题,然后递归地解决所有子问题,最后再由子问题...原创 2009-12-29 20:36:04 · 316 阅读 · 0 评论 -
贪心算法应用之渴婴问题
[渴婴问题] 有一个非常渴的、聪明的小婴儿,她可能得到的东西包括一杯水、一桶牛奶、多罐不同种类的果汁、许多不同的装在瓶子或罐子中的苏打水,即婴儿可得到n种不同的饮料。根据以前关于这n种饮料的不同体验,此婴儿知道这其中某些饮料更合自己的胃口,因此,婴儿采取如下方法为每一种饮料赋予一个满意度值:饮用1盎司第i 种饮料,对它作出相对评价,将一个数值si 作为满意度赋予第i 种饮料。 通常,这个...原创 2009-12-25 16:31:14 · 1339 阅读 · 0 评论 -
十字链表
十字链表的构成用链表模拟矩阵的行(或者列,这可以根据个人喜好来定),然后,再构造代表列的链表,将每一行中的元素节点插入到对应的列中去。十字链表的逻辑结构就像是一个围棋盘(没见过,你就想一下苍蝇拍,这个总见过吧),而非零元就好像是在棋盘上放的棋子,总共占的空间就是,确定那些线的表头节点和那些棋子代表的非零元节点。最后,我们用一个指针指向这个棋盘,这个指针就代表了这个稀疏矩阵。十字链表 ...原创 2009-12-24 16:27:36 · 206 阅读 · 0 评论 -
常用排序算法实现之冒泡排序(Bubble Sort)
冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最前面,然后再对剩下的序列从父前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.因此,复杂度在最坏的情况下是O(N ^ 2).代码如下://交换两个变量的值void Swap( int * a, int * b){ int t...原创 2009-12-19 11:11:51 · 161 阅读 · 0 评论 -
常用排序算法实现之插入排序(Insertion Sort)
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 算法描述 一般来说,插入排序都采用in-place在数组...原创 2009-12-19 10:55:42 · 259 阅读 · 0 评论 -
常用排序算法实现之归并排序(Merge Sort)
归并排序的算法思想是分而治之(divide - conquer),每个递归过程分为三个步骤:1) 分解:把待排序的n个元素的序列分解成两个子序列,每个子序列包括n/2个元素2) 治理:对每个子序列分别调用归并排序(MergeSort),进行归并操作3) 合并:合并两个排好序的子序列,生成排序结果 // 归并排序中的合并算法void Merge(int array[], in...原创 2009-12-18 18:16:58 · 216 阅读 · 0 评论 -
完全数
[定义]完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。后面的数是496、8...原创 2009-12-17 14:03:53 · 2027 阅读 · 0 评论 -
Strassen矩阵算法分析及其实现
对于矩阵乘法 C = A × B,通常的做法是将矩阵进行分块相乘,如下图所示:从上图可以看出这种分块相乘总共用了8次乘法,当然对于子矩阵相乘(如A0×B0),还可以继续递归使用分块相乘。对于中小矩阵来说,很适合使用这种分块乘法,但是对于大矩阵来说,递归的次数较多,如果能减少每次分块乘法的次数,那么性能将可以得到很好的提高。Strassen矩阵乘法就是采用了一个简单的运算技巧,将上面...原创 2009-12-11 15:35:11 · 867 阅读 · 1 评论 -
ACM练习建议(zz)
一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floy...原创 2009-12-10 21:24:13 · 109 阅读 · 0 评论 -
《图像超分辨率研究综述》笔记
图像超分辨率是指由一幅低分辨率图像或图像序列恢复出高分辨率图像。图像超分辨率技术分为超分辨率复原和超分辨率重建。 超分辨率复原和超分辨率重建有一个共同点,就是把在获取图像时丢失或降低的高频信息恢复出来。但两者的区别是明显的,超分辨率复原在光学中是恢复出超过衍射级截止频率以外的信息,而超分辨率重建方法是在工程应用中试图恢复有混叠产生的高频成分。 几何处理、图像复原都是从图像到图像的处...原创 2010-01-05 09:28:41 · 1623 阅读 · 0 评论
分享