自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 571

转载 模拟退火法

转载自: http://www.cnblogs.com/heaad/一. 爬山算法 ( Hill Climbing )         介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。         爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜

2014-04-22 15:42:08 553

原创 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 702

原创 编程面试的10大算法概念汇总(转)

转载自:http://blog.jobbole.com/52144/以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划

2013-11-30 16:04:10 478

原创 马尔科夫链算法

重新把《编程珠玑》读了一遍,以前并没有仔细研究最后一章的生成随机文本,昨天仔细读了一下,感悟颇深,想记录一下自己的感悟,顺便理清一下思路。     言归正传,要通过读取一个文档来生成一个随机的文档,作者使用的方法是根据k连单词的后一个单词的出现概率来选取下一个单词。作者在书中用的方法是读取之后,对数组进行排序,那么前k个单词相同的子串一定是相邻的,然后通过二分查找,找到第一个子串,通过随机选取

2013-11-29 11:12:37 1469

原创 POJ2411 Mondriaan's Dream

大致意思是:给定一个h,w的矩形,用1*2的小矩形填满它,求最大的组合数。        这题算是一道状态压缩DP的入门题吧,作为刚接触状态压缩的我来说,是一道非常好的训练题。言归正传,按照黑书上的说法如果m,n的范围想去甚远,同时数据规模非常的大,可能要采用信息压缩DP,即把每一行看做一个整体。在此题中,先考虑这一行的信息如何压缩,假设在该一格放置一个小矩形,无论是横放还是竖放,将该位设

2013-11-23 21:57:06 500

原创 POJ1080 Human Gene Functions

本题的大意是,人类的基因组成包括4种碱基:A,C,G,T构成,现在要根据相应的矩阵分析给出的两个DNA的相似度。在计算的过程中,由于两个DNA长度可能不等,需要插入“-”来填补,需要解决的问题就是如何插入“-”使得两个DNA的相似度最高。        做到这题时,正好在编程之美上看到了一题类似的题,根据对那题的理解马上勾勒出了程序的大体框架:假设两个DNA分别为A,B。对于每个碱基,都有三种

2013-11-16 22:17:01 395

原创 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 432

转载 五大常用算法之四:回溯法(转)

1、概念      回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。   回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。    

2013-11-14 22:52:57 733

转载 五大常用算法之五:分支限界法(转)

转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741378.html一、基本描述    类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条

2013-11-14 22:50:34 722

转载 五大常用算法之三:贪心算法(转)

转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html一、基本概念:      所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。     贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必

2013-11-14 22:49:43 758

转载 五大常用算法之一:分治算法(转载)

转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html一、基本概念   在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧

2013-11-14 22:47:46 716

原创 POJ1276 Cash Machine

本题的大意是:取款机取款,取款机会给出低于或等于指定金额的钱。      看了一下讨论区,铺天盖地的背包算法,我表示背包九讲看了一点,还不是很理解,只能用别的了。开始准备用DP但是想了半天,没有想出定义什么样的状态比较好,只能作罢。只好暴力搜索了,搜索的策略是从cash开始往前搜索。但是没有剪枝肯定是TLE的,如何剪枝呢?对于每一个cash记录每一次失败搜索的值,如果下次再搜索到这个值,直接返

2013-11-14 19:33:32 622

原创 POJ1260 Pearls

本题的大意是,用不同品质的珍珠做项链,但是对于每个品质的珍珠,会加收是10个的费用,例如,选用10欧元的珍珠5个,那么最终的费用是(5+10)*10  。但是有时用高档次的珍珠替代低档次的珍珠可以减少总费用。需要给给出的数据,求出最小的费用。         刚开始想的过于简单,认为低档次的转化为高一档次的珍珠,然后再将高一档次的珍珠转化为更高档次的,依次类推可以的到最优解。但是贪心算法是错误

2013-11-13 19:20:26 490

原创 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 632

原创 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 465

转载 五大常用算法之二:动态规划算法(转载)

转载自:http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html一、基本概念    动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略    基本思想与分

2013-11-04 15:06:43 600

原创 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 798

转载 KMP算法详解(转载自matrix67.com)

我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?”    解决这类问

2013-10-11 21:47:23 633

原创 POJ 1012 Joseph

问题描述:     假设有k个好人和k个坏人,围成圈坐着,前k个人是好人,后k个人是坏人。必须选定一个最小的m值,使得在第一个好人选出之前,所有的坏人全部死了。输入描述:     输入包括若干行,每一行都是一个数,即k,0输出描述:     每一行输出对应于k值的m值。 都说Joseph是一个经典,但是对于我这种以前没接触过的来说,哪算是经典啊。于是又去百度,找

2013-09-16 22:42:40 515

算法C语言实现

算法C语言实现图算法的电子版,我觉得非常清晰

2013-11-30

编程珠玑源代码

编程珠玑的例题源码,用C和C++实现,很不错的资源

2013-11-28

C#写的各种拟合函数

这是用C#写的用最小二乘法实现的各种拟合函数,包括了多项式拟合,指数函数拟合,对数函数拟合,幂函数拟合。本人菜鸟一枚,有错误的地方请多多指教。

2013-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除