自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kewpie

以网为友,师从天下

  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 Silly Sort

对一个长度为N的整数序列,交换数据X和Y的代价是两数之和X+Y,通过两两交换数据使得该序列呈增序次序排列,求最小代价

2011-03-27 23:14:00 1721

原创 Evaluating Elections

即将举行选举,每个政党都会为各个选区指定一名候选人参加该选区角逐,选举规则非常苛刻,规定只有当一个党派获胜的选区数大于其他所有党派的选区数之和时,这个党派才被认为赢得选举。各选区的人数统计在一个数组中,求能够充分确保一个党派获胜的最小人数。

2011-03-26 14:40:00 747

原创 Height Round

有N(3~50)个人顺时针绕着圆桌坐成一圈,他们都对身高很敏感,组织者需要考虑一个最佳的座次安排,使得任意相邻两人的身高差的最大值达到最小,请打印N个人最后的身高排列,如果存在多个排列,则打印按字典序最优的一个。

2011-03-24 12:55:00 1492 3

原创 看片计划

Horry和John打算晚上一起看恐怖影片,Horry精神很好,但是John比较疲劳容易犯困。John初始的清醒值为74单位,然后每过1分钟就降低1个单位,降到0以下就会入睡,一旦睡着后就无法再看后面的影片。但是,当John被特定的恐怖场景刺激时,兴奋值会因此而升高47个单位。每部电影长短各异,且每部都含有一个特定恐怖场景。现在Horry想根据影片的长度以及其中恐怖场景出现的时间等信息,来排看片计划,使得John在入睡之前能从头至尾看全的影片的数目达到最大。要求返回这样一个看片计划表(影片序号数组),如果存

2011-03-23 13:22:00 1096

原创 Magical Number

如果一种正整数,不含前导0,而且任意相邻两个数字之差至少为M,则称其为魔法数,正整数1~9对任意M值都是有效的魔法数。给定M值以及范围[A,B](AB都为1~100000000的正整数,且A小于B),返回有效魔法数的个数。

2011-03-19 14:23:00 878

原创 PizzaDelivery

快餐公司坐落于一个矩形小区内,小区由若干小方格组成,每个方格内,或者是写字楼,或者是景观地貌。快餐公司只有两个送货员,他们每天中午都要在小区内往返送披萨送给写字楼客户,每人每次只能送一幢写字楼。送货员发现,每次从一个方格到另一个方格,会消耗时间如下:如果相邻方格内都是景观地貌,高度差为0则花1分钟,高度差为1则花3分钟,其他高度差则无法通过;如果有一个方格是写字楼,则花2分钟(快餐公司也坐落在某写字楼内),请为送货员设计最佳的送货流程,返回最后一份披萨送达客户的最快时间;如果无法完成任务,则返回-1。

2011-03-18 13:05:00 1466

原创 开门游戏

John和Gogo位于N+1个房间的两端(0号和N号房间),相邻房间之间都有一扇门,门上涂有颜色,共16种颜色(分别由字母A至P表示),有个房间编号为trophy。游戏时,John先开某种颜色的一类门,然后Gogo再开另一种颜色的门,依次轮流。谁先打开自己一侧到Trophy房间的所有门,则获胜;如果同时打通,算和局。游戏时,John和Gogo会试图尽快打通己方通道的同时,尽量延缓对手的打通速度。假设比赛结束时所打开的门的颜色种数为x,如果平局返回0,如果John胜返回x,如果Gogo胜返回-x。

2011-03-15 20:34:00 812

原创 AmoebaCode

给定一个由数字字符构成的字符串,以及一个数值K,保证字符串中所有数字都小于等于K,题目问如果将所有的0用1~K之间的数字替换,设替换所得结果串中任意两个相同字符间的最小间隔为D,求D的最大值。

2011-03-14 21:09:00 751

原创 一类反复取元素问题的递归解

问题1:N个人排成一个排,从第一个人开始依次报数,数到K的人则退出,接下来的人继续从1开始数数,最右边的人数完数后最左边的人作为后继接着数,形成一个逻辑的环,如此反复直至最后一人,求最后一个人的位置索引问题2:N个人排成一排,第一次所有从1开始的间隔为2的位置的人退出(1、3、5……),然后在剩下的一排人中,第二次所有从1开始间隔为3的位置的人退出(1、4、7……),间隔依次递增4、5、6……,依次直至最后一个人,求最后一个人的位置索引

2011-03-11 22:52:00 808

原创 最长无重复字符的子串

网上看到一道题,找出一个字符串中的不含重复字符的最长子串,并打印,时间复杂度要求O(n)。比如字符串“abababcmdefghikjflababaefabcdezghikjfaefew”,有四个长度都为12(最长)符合条件的子串:abcmdefghikj、fabcdezghikj、abcdezghikjf和bcdezghikjfa。

2011-03-10 21:09:00 1762

原创 回文牌游戏

有任意一组牌,牌的正面是一个字符串,背面是一个数,游戏内容是选择合适的若干张牌以某种顺序排成一排,使得正面的字符串串接起来构成一个回文串,同时背面的数值之和达到最大。比如:有牌{"abc", "abc", "def", "cba", "fed"},对应数值为{24, 7, 63, 222, 190},则一个有效解为"abcdeffedcba"(第0、2、3和4个元素),达到最大值24+63+222+190=499。

2011-03-09 15:38:00 1461

原创 两个数组之和的问题

问题1.任意两个相同长度的整形数组,通过交换数组中的若干个元素(交换不改变数组数组长度),使两个数组的和相差最小问题2.任意一个整形数组,将其划分成两个子数组,要求两个子数组的和相差最小

2011-03-08 15:34:00 2213 2

原创 邮箱问题【一类最短距离问题续】

<br />上题不禁让人想起了一个著名的邮箱问题:有n个村庄沿着一条公路依次排开,相邻村庄间距是随意的,邮局打算沿公路设置m个邮箱,邮局希望你来设计一个让村民寄信或取信走的距离最省的邮箱布局方案。<br /> <br />相比前一个距离题,邮箱问题变成了多阶段的最小距离问题,思想是类似的,任意两个村庄间设置邮箱的时,一定是取中间点的位置。转换方程可以为:<br /> <br />f(p,v) = min{f(p-1, v), f(p-1, vi)+cost(vi+1,v)}    p指邮箱,v指村庄,vi取

2011-03-02 13:17:00 2211

原创 一类最短距离问题

在一个纵横间距为1的网格地图上,有n个比赛选手,他们分别位于某个纵横交点(即x和y坐标都是1的整倍数),将参加一个循环赛(即任意两个选手之间都需要进行比赛),你是赛事的组织者,要结合选手的位置信息来设计一个最佳的比赛赛程,使得他们走的路程总和最少(注选手只能沿着网格线走,不能沿任何对角线穿越),选手一旦完成所有比赛后,可以任意选择行动或停在原地,不需要回到其原来位置。比如:如果有选手A(0,0),B(0,2),C(2,0),D(1,1),E(2,2),则一个可能的最佳解为:A和B走到(0,1)比赛,C和E走

2011-03-02 12:49:00 1114

原创 九宫格游戏

有一个类九宫格(如下),灰色三角形一次编号0-9,选中其中一个作为空格,其余各编号三角形中可能被填充红、蓝、绿、黄四种颜色,求从任意一个起始布局(init)开始,变换至任意的目标布局(goal),如果成功,返回0;如果失败,则求至少需要替换多少个格子的填充色,然后方能成功,返回需替换的格子数。举例:init="BG*YRGRRYR",goal="BGGY*YRRRR",布局字符串第i位表示第i个格中颜色(RGBY依次是颜色,*为空格),经由如下变换序列,由init可以成功变换为goal,所以无需改变任何一格

2011-03-01 11:45:00 2159 1

原创 递归颠倒栈

用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。思路:将栈顶的元素依次“沉”到n位、n-1位、n-2位……2位,好似一众大王驾到,尔等次第让开,呵呵。 public static void reverse(Stack stack) { int floor = stack.size(); while(floor>0) { int top = stack.pop(); down(stack, t

2011-02-23 21:22:00 1697

原创 【怪题】下一排数

<br />从July网友的神帖中看到一道怪题:<br /> <br />给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数,要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下:  【0,1,2,3,4,5,6,7,8,9】<br /> <br />结果可想而知,理解题意都不止花了10分钟,严重超时,真可谓是个怪题。后来理解了题目,还是没有想到更好的方法,只写出了个穷举实现。想法是,每次搜索时更新当前位置和所剩位置个数,当位置达到限制,或所剩位置不够,则退回至上次搜索。<br

2011-02-21 23:17:00 784

原创 有序排队问题

<br />原题:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?<br /> <br />分析:将12个人从矮到高排序,然后将1至6人做第一排,7至12人做第二排,这是一个基本组合。在此基础上,尝试从第一排和第二排各选一个互换并且重新排列,比如可以互换(6,7)、……、(6,11)、(5,7)……(5,11)等等然后重排;接着将互换名额增加至2……N/2,又可以得到不同的组合情况。<br /> <br />互换名额为1:第二排可以选择的位置有*标出

2011-02-21 16:31:00 1556

原创 最长字符串链接

<br />有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。<br /> <br />分析一下,将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变成一个有关图的路径长度的问题。链接所得的字符串最长长度即为从图的某个节点出发所能得到的最长路径问题,与最短路径类似,可以应用弗洛伊德算法求解。对于循环,即可认为各个节点通过其他节点又回到自己,反应在路径长度

2011-02-20 22:22:00 3519

原创 求从N到1的最少操作次数(仅允许加减1或除2)

<br />题目等价于:在只允许加、减1或乘2的前提下,求从1变到N的最少操作次数。<br /> <br />分析:任意一个中间数m,若m为偶数,则可能由m-1加1得到,或是由m/2乘2得到;若m为奇数,则可能由m-1加1得到,或是由(m+1)/2经过乘2再减1得到,故可得递推式:<br /> <br />n为偶数: f(n) = min{f(n-1)+1, f(n/2)+1}<br />n为奇数: f(n) = min{f(n-1)+1, f((n+1)/2)+2}<br />初始值: f(0)=f(1)

2011-02-20 13:50:00 3615

原创 回文串扩展问题

随意搜了一把关键字“回文串”,又发现一个关于回文的好题:对任意的字符串,求最少需要插入多少个字符能使其成为一个回文串。举例:原串为“213456532”,最少插入1和4就可以得到一个回文串“21345654312”。第一感觉这个应该还是有DP解,仔细想想,以任意字符为回文串中心,可以得到左右两个子串A和B(空串也可视为合法串);如果原串中有两个相邻字符是相同的,则以这两个字符为回文串中心,得到A和B。然后问题转化为针对任意字符串A和B,如何插入字符能使得A和BT变成相同串,BT=revers

2011-02-12 23:40:00 933

原创 DP求最长回文串

新近在网友一篇博文中看到他提及其一个朋友用了后缀数组、后缀树和EKM算法取字符串中的最长回文子串(即从左到右读和从右到左读都一样的字符串),这些算法我都没有听说过,望其项背中……打算某天去找些资料来学习一下。感叹之余,想想自己如果遇到这题,有什么好的办法吗?YY中,一个想法浮了出来,DP细想起来,字符串中每个字符都是一个最基本的长度为1的回文,然后相邻的相同字符串也同样构成回文,然后每个字符可以通过前一个字符的回文集合确定自己的集合。具体起来,先分配字符串长度的集合set[n],迭代到第i个字符时,首先将位

2011-02-11 17:34:00 2442

原创 记忆化搜索之LCS实践

小虾新近读一强人的博文时看到了记忆化搜索这个词,好奇之下,上网一番搜索,找了些资料来学习。记忆化搜索可以简要概括为“动态规划的实现,递归搜索的形式”。动态规划自底向上的推导过程,很多时候让小虾感觉不太容易处理,所以觉得自顶向下的记忆化搜索更加平易近人,更加可爱。新学的东西,需要通过实践来加强理解。所以,小虾找来了最长公共子串这个耳熟能详的题来实践。不同的是,以前多是在两个字符串上求LCS,即二维DP。试想,如果变成三个或者更多个的字符串上求LCS,自底向上的DP推导,应该会更加复杂。所以,小虾这里选择了三字

2011-02-09 17:22:00 829

原创 SRM 495

<br />新年了,小虾米想踏踏实实地提高算法,看了最近的SRM495,试着做了几题<br /> <br />CarrotBoxesEasy<br />如果为了节省时间,可以写个最简实现,每次找一个符合条件的数减一,重复k次就好。但是实际练习,还是想能写个效率好些的,多省掉些循环,想法是每次找出最大和次大的数m1和m2,并统计m1有多少个dup,然后比较k和(m1-m2)*dup,如果K小,则最后位置就从这些m1中产生,如果k大,则k=k-(m1-m2)*dup,并将所有m1“削”为m2,继续下一次迭代,直

2011-02-07 23:23:00 728

原创 Common Part

【原题出处不详】有这样一种整形数组,长度为偶,奇数位的值表示某线段起点,偶数位的值表示对应线段的长度(比如,数组{0,1,3,6}表示两个线段,起点分别为0和3,长度分别为1和6),现有任意两组线段A和B,求一算法计算A和B所表示的线段之间公共区域的长度(各组线段本身也可能包含重叠区域)最初解题时,思路走偏了,想着先整理组内的线段,再去除重叠并分离线段,使得整理后的组内线段互不相交,然后求出组内线段总长度a和b,接着再合并A和B组的线段,类似地求取合并后的总长度c,于是重叠部分d=a+b-c,但是,代码着实

2011-01-19 22:43:00 809

原创 新年希望

希望所有努力着的人们在新年里能够实现梦想;希望能通过我的首个博客结识更多的朋友;希望在技术上能有更多提高;……希望处处都有希望!:)

2011-01-19 13:22:00 646

The JavaTM Virtual Machine Specification (2nd Edition)

The JavaTM Virtual Machine Specification Second Edition Tim Lindholm Frank Yellin

2010-03-11

DEELX 正则表达式手册

DEELX 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎。是 RegExLab 开展的一个研究开发项目。 基本特点: 支持与 Perl 兼容的正则表达式语法。 支持 IGNORECASE, SINGLELINE, MULTILINE 等常见匹配模式。 兼容性强,能在 vc6, vc7, vc8, gcc, Turbo C++ 等大多数 C++ 环境编译。 支持命名分组,条件表达式,递归表达式等多种高级特性。(1.2版本新特点) 与 GRETA、boost 相比,DEELX 独到之处: 完全使用模版库编写,支持 char, wchar_t, int 等以及其他基类型版本。 全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便。 支持从右向左匹配模式,可从文本结束位置向前搜索匹配。 可防止零长度子匹配循环无限次而产生的死循环。(1.2版本新特点) DEELX 不足之处: DEELX 是完全免费的实验室产品。 为弥补实验室产品的不足,本站同步推出了与本引擎完全兼容的调试工具:Match Tracer。 DEELX 可免费用于个人用途及商业用途。

2010-03-11

空空如也

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

TA关注的人

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