- 博客(20)
- 资源 (3)
- 收藏
- 关注
转载 ELFhash解释
// ELF Hash Functionunsigned int ELFHash(char *str){unsigned int hash = 0;unsigned int x = 0;while (*str){hash = (hash if ((x = hash & 0xF0000000L) != 0){//如果最高的四位不为0,则说明字符多余7个
2014-05-06 08:52:28
612
转载 模拟退火法
转载自: http://www.cnblogs.com/heaad/一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜
2014-04-22 15:42:08
616
原创 POJ2331 Water pipe
题目的大意是,有起点(x1,y1),终点(x2,y2),要铺设从起点到终点的水管,水管的长度分别为L1,L2,L3,L4,水管的数量为C1,C2,C3,C4(管子的种类最多是4),找出铺设水管所需最小的水管总数。 看到这题首先是DFS,首先计算x方向上所需最小的管子数,然后计算y方向上所需最小的管子数,二者相加便可得最小的水管总数。可是纠结了好几天,编程能力还是太差,只想到了两种剪枝,一
2014-02-21 17:06:15
764
原创 编程面试的10大算法概念汇总(转)
转载自:http://blog.jobbole.com/52144/以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划
2013-11-30 16:04:10
521
原创 马尔科夫链算法
重新把《编程珠玑》读了一遍,以前并没有仔细研究最后一章的生成随机文本,昨天仔细读了一下,感悟颇深,想记录一下自己的感悟,顺便理清一下思路。 言归正传,要通过读取一个文档来生成一个随机的文档,作者使用的方法是根据k连单词的后一个单词的出现概率来选取下一个单词。作者在书中用的方法是读取之后,对数组进行排序,那么前k个单词相同的子串一定是相邻的,然后通过二分查找,找到第一个子串,通过随机选取
2013-11-29 11:12:37
1556
原创 POJ2411 Mondriaan's Dream
大致意思是:给定一个h,w的矩形,用1*2的小矩形填满它,求最大的组合数。 这题算是一道状态压缩DP的入门题吧,作为刚接触状态压缩的我来说,是一道非常好的训练题。言归正传,按照黑书上的说法如果m,n的范围想去甚远,同时数据规模非常的大,可能要采用信息压缩DP,即把每一行看做一个整体。在此题中,先考虑这一行的信息如何压缩,假设在该一格放置一个小矩形,无论是横放还是竖放,将该位设
2013-11-23 21:57:06
544
原创 POJ1080 Human Gene Functions
本题的大意是,人类的基因组成包括4种碱基:A,C,G,T构成,现在要根据相应的矩阵分析给出的两个DNA的相似度。在计算的过程中,由于两个DNA长度可能不等,需要插入“-”来填补,需要解决的问题就是如何插入“-”使得两个DNA的相似度最高。 做到这题时,正好在编程之美上看到了一题类似的题,根据对那题的理解马上勾勒出了程序的大体框架:假设两个DNA分别为A,B。对于每个碱基,都有三种
2013-11-16 22:17:01
436
原创 POJ1042 Gone Fishing
本题的大意是:佳佳要钓鱼,有h个小时,n个湖,每个湖初始的状态是fi,每5分钟的钓鱼,fi要减少di的鱼数,并且从i-1个湖到i湖所需的时间为ti。佳佳如何安排才能钓到最多的鱼。 刚开始做这题时,并没有想到用贪心算法。而是通过对每一时刻t,选择是停留在该湖还是去下一个湖 ,这样可以用DP求得,d(i,n,k)表示在i时候,n湖,湖中鱼的数量为k时能取得的最大鱼数,但是这个状态
2013-11-15 22:30:19
466
转载 五大常用算法之四:回溯法(转)
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
2013-11-14 22:52:57
786
转载 五大常用算法之五:分支限界法(转)
转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741378.html一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条
2013-11-14 22:50:34
780
转载 五大常用算法之三:贪心算法(转)
转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必
2013-11-14 22:49:43
803
转载 五大常用算法之一:分治算法(转载)
转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧
2013-11-14 22:47:46
759
原创 POJ1276 Cash Machine
本题的大意是:取款机取款,取款机会给出低于或等于指定金额的钱。 看了一下讨论区,铺天盖地的背包算法,我表示背包九讲看了一点,还不是很理解,只能用别的了。开始准备用DP但是想了半天,没有想出定义什么样的状态比较好,只能作罢。只好暴力搜索了,搜索的策略是从cash开始往前搜索。但是没有剪枝肯定是TLE的,如何剪枝呢?对于每一个cash记录每一次失败搜索的值,如果下次再搜索到这个值,直接返
2013-11-14 19:33:32
657
原创 POJ1260 Pearls
本题的大意是,用不同品质的珍珠做项链,但是对于每个品质的珍珠,会加收是10个的费用,例如,选用10欧元的珍珠5个,那么最终的费用是(5+10)*10 。但是有时用高档次的珍珠替代低档次的珍珠可以减少总费用。需要给给出的数据,求出最小的费用。 刚开始想的过于简单,认为低档次的转化为高一档次的珍珠,然后再将高一档次的珍珠转化为更高档次的,依次类推可以的到最优解。但是贪心算法是错误
2013-11-13 19:20:26
528
原创 POJ1121 UNIMODAL PALINDROMIC DECOMPOSITIONS
本题大意是,对于某一个数,有多少回文的组合方式。第一反应就是使用DP,状态的定义:d(i,k)表示数i中,组合数大于k的个数。因此d(i,k)=∑d(i-2j,j),j=n/2的情况,使d(i,j)=1。此题特别需要注意的是要使用int64的数据类型,对应的输出要使用"%lld",否则会溢出。#include #includetypedef long long INT64;I
2013-11-13 10:42:16
674
原创 POJ1141 Brackets Sequence
大致的意思是将一个非规范的序列转化成规范的序列,如 ([(],这是一个非规范的序列,处理之后要求输出规范的序列:()[()],要求就是添加最少的括号。 黑书上通过这题来介绍选择DP的原因之一:递归。 因为序列Si····Sj,可以分成:Si···Sk,Sk+1···Sj,只要d(i,k)+d(k+1,j)最小,则d(i,j)=min(d(i,j),d(i,k)+d(k+1,j)
2013-11-11 16:59:39
507
转载 五大常用算法之二:动态规划算法(转载)
转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分
2013-11-04 15:06:43
646
原创 POJ 1220关于大数的进制转换
问题描述:已知:位数为K(0 求:转换为M进制(2 ≤ M ≤62)后的新数Q输入:第1行为case数T;第2至第T+1行为T个case,每行输入均为N、M以及P,用空格分隔输出:采用以下形式输出N PM Q空行……Sample Input:162 2 abcdefghiz
2013-10-15 20:02:51
865
转载 KMP算法详解(转载自matrix67.com)
我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?” 解决这类问
2013-10-11 21:47:23
685
原创 POJ 1012 Joseph
问题描述: 假设有k个好人和k个坏人,围成圈坐着,前k个人是好人,后k个人是坏人。必须选定一个最小的m值,使得在第一个好人选出之前,所有的坏人全部死了。输入描述: 输入包括若干行,每一行都是一个数,即k,0输出描述: 每一行输出对应于k值的m值。 都说Joseph是一个经典,但是对于我这种以前没接触过的来说,哪算是经典啊。于是又去百度,找
2013-09-16 22:42:40
589
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人