![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
学仙只为看看天
这个作者很懒,什么都没留下…
展开
-
背包九讲
背包问题 它是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放 到背包中来加密消息。背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物 品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。但转载 2013-04-28 11:31:36 · 447 阅读 · 0 评论 -
算法理解——大数相乘问题
腾讯今年校招的一道附加题,就是“大数相乘”问题。所谓大数相乘,就是指数字比较大,相乘的结果超出了基本类型的表示范围,所以这样的数不能够直接做乘法运算。其实乘法运算可以分拆为两步:第一步,是将乘数与被乘数逐位相乘;第二步,将逐位相乘得到的结果,对应相加起来。这有点类似小学数学中,计算乘法时通常采用的“竖式运算”。这里唯一要注意的便是进位问题,我们可以先不考虑进位,当所有位对应相加,产生结果之原创 2013-10-29 15:21:15 · 9239 阅读 · 4 评论 -
算法理解——全排列算法
全排列算法描述如下:用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba这种问题可以用递归的思想描述,如下:abc的全排列,即为:{a在第一个位置,剩下元素(这里是b和c的全排列)} U {a在第二个位置,剩下元素的全排列} U {a在第三个位置,剩下元素原创 2013-10-15 19:03:48 · 1756 阅读 · 0 评论 -
算法理解——约瑟夫环
前几天去优酷笔试,有一个约瑟夫环的问题,当时由于时间比较紧张加上长久不写算法,当时没写出来。后来回来后想了一下,其实用java写非常简单,这里面利用了java提供的list,与传统的C语言写法相比,难免有一些投机取巧的成分。import java.util.ArrayList;import java.util.List;public class JosephusRing{原创 2013-09-27 16:55:14 · 2844 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / /转载 2013-10-12 13:43:20 · 640 阅读 · 0 评论 -
算法理解——求连续子向量的最大和
题目:写一个程序,求出一个数组中连续数和最大的,返回和,比如 { -1,1,2,0,3},返回 1 + 2 + 0 + 3 = 6这道题有很多组解法,参考《编程珠玑》给出的一种解法,最快能达到O(n)。思路是:1.前i个元素中,最大总和子数组要么在前i-1个元素中(将其存储在maxsofar中),要么结束位置为i(将其存储在maxendinghere中)2.每次得出maxendingh原创 2013-09-27 20:07:49 · 3038 阅读 · 1 评论 -
算法理解——LCS算法(最长公共子序列)
这是算法导论上面的一个经典动态规划问题,之前曾经参加过一场笔试,就遇到这个算法。因为这个算法在动态规划问题中比较具有代表性,所以就用java实现了一下。代码实现过程中参考了算法导论上面的思路。算法分析:1.设X(1...i),Y(1...j)为两个序列,则对于最长子序列的长度,可以得出递归式如下:a.当Xi == Yj时,LCS(Xi,Yj) = LCS(Xi-1,Yj-1原创 2013-09-27 18:59:17 · 1908 阅读 · 0 评论 -
算法理解——寻找和为定值的两个数/多个数
1 寻找和为定值的两个数题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。example: 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。思路1: 若数组无序,首先用快排排序O(n*log n)然后从头遍历每个数,对其互补的数用二分查找,因为二分查找的时间复杂度是O(log n),所以总的时间复杂原创 2013-09-26 15:52:01 · 9239 阅读 · 0 评论 -
算法理解——top K问题实例
参考:http://blog.csdn.net/v_JULY_v/article/details/6403777题目:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门原创 2013-09-26 15:44:26 · 2040 阅读 · 0 评论 -
算法理解——字符串根据字典值排序
字符串根据字典值排序问题,就是指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推,比如说{"dog","dear","eye","bed"},排序后应该是{"bed","dear","dog","eye"}刚开始接触到这个问题时候,当时想着排序首先按照第一个字母,如果第一个字母相同的那些字符串,再归为一类,再按照第二个字母排序。。。依次类推原创 2013-10-08 10:51:22 · 13105 阅读 · 0 评论 -
HDU ACM 1005 java版
原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1005Problem DescriptionA number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.Given A,原创 2014-03-19 16:05:57 · 4248 阅读 · 1 评论