本文由ImportNew-hejiani翻译自javacodegeeks。欢迎加入Java小组。转载请参见文章末尾的要求。背包问题很有意思,同时也富有挑战性。首先看一下这个问题的完整描述:问题假定背包的最大容量为W,N件物品,每件物品都有自己的价值和重量,将物品放入背包中使得背包内物品的总价值最大。...
分类:
其他好文 时间:
2014-09-21 01:42:29
阅读次数:
628
鸽巢排序:鸽巢排序, 也被称作基数分类, 是一种时间复杂度为(Θ(n))且在不可避免遍历每一个元素并且排序的情况下效率最好的一种排序算法. 但它只有在差值(或者可被映射在差值)很小的范围内的数值排序的情况下实用.当涉及到多个不相等的元素, 且将这些元素放在同一个"鸽巢"的时候, 算法的效率会有所降低...
分类:
其他好文 时间:
2014-09-20 19:07:19
阅读次数:
361
1、概述 给定4个整数,当中每一个数字仅仅能使用一次;随意使用 + - * / ( ) ,构造出一个表达式,使得终于结果为24,这就是常见的算24点的游戏。这方面的程序非常多,一般都是穷举求解。本文介绍一种典型的算24点的程序算法,并给出两个详细的算24点的程序:一个是面向过程的C实现,一个是面向....
分类:
其他好文 时间:
2014-09-19 15:31:15
阅读次数:
187
1016: [JSOI2008]最小生成树计数orz,感觉对最小生成树的理解又加进了一步。ps:不得不说对于经典算法的探究是永无止境的,只能通过交流和增长见识来学习和体会,自己研究确实困难。让我们来深入分析一下kruskal算法。算法过程不多说,直接证明:假设算法考虑到第k条边,这时发现边的两端已经...
分类:
其他好文 时间:
2014-09-16 20:34:41
阅读次数:
244
经典算法详解(2):费氏数列
说明:
Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,
一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,
二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。
如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,
类似的道...
分类:
其他好文 时间:
2014-09-13 22:52:16
阅读次数:
261
说明:
河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时
北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世
纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64
个由上至下依由小至大排列的金盘(Disc),并命令僧侣...
分类:
其他好文 时间:
2014-09-11 23:54:02
阅读次数:
221
在看了morewindows的白话经典算法的排序教程后,我用C++ 来...
分类:
编程语言 时间:
2014-09-09 18:20:39
阅读次数:
194
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
其他好文 时间:
2014-09-06 17:19:53
阅读次数:
210
最近在看图论的经典算法,
先看的是求单源最短路的dijkstra,优化后的算法用了优先队列,看起来有点复杂。
感觉 弗洛伊德(Floyd) 要比 迪克斯特拉(dijkstra) 更好理解一点,但是Floyd是三层循环,当然会慢很多。一旦数据开大就跪了吧。
floyd可以用来求 两个 连通点间的最短路问题。同时可以得到边权的和,即最短路的长度。
另外一个比较简单的应用,还可以用来判断...
分类:
其他好文 时间:
2014-08-30 15:09:49
阅读次数:
168
一、LDA的基本思想线性判别式分析(LinearDiscriminantAnalysis,LDA),也叫做Fisher线性判别(FisherLinearDiscriminant,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。线性鉴别分析的基本思想是...
分类:
其他好文 时间:
2014-08-27 01:34:47
阅读次数:
469