Skip to content

{ Monthly Archives } 五月 2007

PHP清除指定内容的HTML标记

系统带的函数: strip_tags($str); // Strip HTML and PHP tags from a string 自己写的函数: /** * 清除指定内容中的HTML 标记 * * @param string $content * @return string $text */ function clear_tag($content) { $search = array (“‘]*?>.*?‘si”, // 去掉 javascript “‘ ]*?>.*? ‘si”, // 去掉 javascript “‘’si”, // 去掉 HTML 标记 “‘([\r\n])[\s]+’”, // 去掉空白字符 “‘&(quot|#34);’i”, // 替换 HTML 实体 [...]

PHP中GBK和UTF8编码处理

一、编码范围1. GBK (GB2312/GB18030) \x00-\xff GBK双字节编码范围 \x20-\x7f ASCII \xa1-\xff 中文 \x80-\xff 中文 2. UTF-8 (Unicode) \u4e00-\u9fa5 (中文) \x3130-\x318F (韩文 \xAC00-\xD7A3 (韩文) \u0800-\u4e00 (日文) ps: 韩文是大于[\u9fa5]的字符 正则例子: preg_replace(“/([\x80-\xff])/”,””,$str); preg_replace(“/([u4e00-u9fa5])/”,””,$str); 二、代码例子 //判断内容里有没有中文-GBK (PHP) function check_is_chinese($s){ return preg_match(‘/[\x80-\xff]./’, $s); } //获取字符串长度-GBK (PHP) function gb_strlen($str){ $count = 0; for($i=0; $i= 192 && $value = 224 && $value = 240 && [...]

开源搜索引擎简介

搜索引擎的工作流程主要分为三步:从互联网抓取网页→创建抓取网页的索引库→从索引库中进行搜索。 首先需要一个能访问网络的爬虫器程序,依据URL之间的关联性自动爬行整个互联网,并对爬行过的网页进行抓取收集。当网页被收集回来后,采用索引分析程序进行网页信息的分析,依据一定的相关度算法(如超链接算法)进行大量计算,创建倒排序的索引库。索引库建好后用户就可以通过提供的搜索界面提交关键词进行搜索,依据特定的排序算法返回搜索结果。因此,搜索引擎并不是对互联网进行直接搜索,而是对已抓取网页索引库的搜索,这也是能快速返回搜索结果的原因,索引在其中扮演了最为重要的角色,索引算法的效率直接影响搜索引擎的效率,是评测搜索引擎是否高效的关键因素。 网页爬行器、索引器、查询器共同构成了搜索引擎的重要组成单元,针对特定的语言,如中文、韩文等,还需要分词器进行分词,一般情况下,分词器与索引器一起使用创建特定语言的索引库。它们之间的协同关系如图1所示。 而开放源代码的搜索引擎为用户提供了极大的透明性,开放的源代码、公开的排序算法、随意的可定制性,相比于商业搜索引擎而言,更为用户所需要。目前,开放源代码的搜索引擎项目也有一些,主要集在中搜索引擎开发工具包与架构、Web搜索引擎、文件搜索引擎几个方面,本文概要介绍一下当前比较流行且相对比较成熟的几个搜索引擎项目。 开源搜索引擎工具包 1.Lucene Lucene是目前最为流行的开放源代码全文搜索引擎工具包,隶属于Apache基金会,由资深全文索引/检索专家Doug Cutting所发起,并以其妻子的中间名作为项目的名称。Lucene不是一个具有完整特征的搜索应用程序,而是一个专注于文本索引和搜索的工具包,能够为应用程序添加索引与搜索能力。基于Lucene在索引及搜索方面的优秀表现,虽然由Java编写的Lucene具有天生的跨平台性,但仍被改编为许多其他语言的版本:Perl、Python、C++、.Net等。 同其他开源项目一样,Lucene具有非常好的架构,能够方便地在其基础上进行研究与开发,添加新功能或者开发新系统。Lucene本身只支持文本文件及少量语种的索引,并且不具备爬虫功能,而这正是Lucene的魅力所在,通过Lucene提供的丰富接口,我们可以根据自身的需要在其上添加具体语言的分词器,针对具体文档的文本解析器等,而这些具体的功能实现都可以借助于一些已有的相关开源软件项目、甚至是商业软件来完成,这也保证了Lucene在索引及搜索方面的专注性。目前,通过在Lucene的基础上加入爬行器、文本解析器等也形成了一些新的开源项目,如 LIUS、Nutch等。并且Lucene的索引数据结构已经成了一种事实上的标准,为许多搜索引擎所采用。 2.LIUS LIUS即Lucene Index Update and Search的缩写,它是以Lucene为基础发展起来的一种文本索引框架,和Lucene一样,同样可以看作搜索引擎开发工具包。它在Lucene的基础上作了一些相应的研究及添加了一些新的功能。LIUS借助于许多开源软件,可以直接对各种不同格式/类型的文档进行文本解析与索引,这些文档格式包括 MS Word、MS Excel、MS PowerPoing、RTF、PDF、XML、HTML、TXT、Open Office及JavaBeans等,对Java Beans的支持对于进行数据库索引非常有用,在用户进行对象关系映射(如:Hibernate、JDO、TopLink、Torque等)的数据库连接编程时会变得更加精确。LIUS还在Lucene的基础上增加了索引更新功能,使针对索引的维护功能进一步完善。并且支持混和索引,可以把同一目录下与某一条件相关的所有内容整合到一起,这种功能对于需要对多种不同格式的文档同时进行索引时非常有用。 3.Egothor Egothor是一款开源的高性能全文搜索引擎,适用于基于全文搜索功能的搜索应用,它具有与Luccene类似的核心算法,这个项目已经存在了很多年,并且拥有一些积极的开发人员及用户团体。项目发起者Leo Galambos是捷克布拉格查理大学数学与物理学院的一名高级助理教授,他在博士研究生期间发起了此项目。 更多的时候,我们把Egothor看作一个用于全文搜索引擎的Java库,能够为具体的应用程序添加全文搜索功能。它提供了扩展的Boolean模块,使得它能被作为Boolean模块或者Vector模块使用,并且Egothor具有一些其他搜索引擎所不具有的特有功能:它采用新的动态算法以有效提高索引更新的速度,并且支持平行的查询方式,可有效提高查询效率。在Egothor的发行版中,加入了爬行器、文本解析器等许多增强易用性的应用程序,融入了Golomb、Elias-Gamma等多种高效的压缩方法,支持多种常用文档格式的文本解析,如HTML、 PDF、PS、微软Office文档、XLS等,提供了GUI的索引界面及基于Applet或者Web的查询方式。另外,Egothor还能被方便地配置成独立的搜索引擎、元数据搜索器、点对点的HUB等多种且体的应用系统。 4.Xapian Xapian是基于GPL发布的搜索引擎开发库,它采用C++语言编写,通过其提供绑定程序包可以使Perl、Python、PHP、Java、Tck、C#、Ruby等语言方便地使用它。 Xapian还是一个具有高适应性的工具集,使开发人员能够方便地为他们的应用程序添加高级索引及搜索功能。它支持信息检索的概率模型及丰富的布尔查询操作。Xapian的发布包通常由两部分组成:xapian-core及xapian-bindings,前者是核心主程序,后者是与其他语言进行绑定的程序包。 Xapian为程序开发者提供了丰富的API及文档进行程序的编制,而且还提供了许多编程实例及一个基于 Xapian的应用程序Omega,Omega由索引器及基于CGI的前端搜索组成,能够为HTML、PHP、PDF、PostScript、 OpenOffice/StarOffice、RTF等多种格式的文档编制索引,通过使用Perl DBI模块甚至能为MySQL、PostgreSQL、SQLite、Sybase、MS SQL、LDAP、ODBC等关系数据库编制索引,并能以CSV或XML格式从前端导出搜索结果,程序开发者可以在此基础上进行扩展。 5.Compass Compass是在Lucene上实现的开源搜索引擎架构,相对比于Lucene而言,提供更加简洁的搜索引擎 API。增加了索引事务处理的支持,使其能够更方便地与数据库等事务处理应用进行整合。它更新时无需删除原文档,更加简单更加高效。资源与搜索引擎之间采用映射机制,此种机制使得那些已经使用了Lucene或者不支持对象及XML的应用程序迁移到Compass上进行开发变得非常容易。 Compass还能与Hibernate、Spring等架构进行集成,因此如果想在Hibernate、Spring项目中加入搜索引擎功能,Compass是个极好的选择。 开源Web搜索引擎系统 1.Nutch Nutch是Lucene的作者Doug Cutting发起的另一个开源项目,它是构建于Lucene基础上的完整的Web搜索引擎系统,虽然诞生时间不长,但却以其优良血统及简洁方便的使用方式而广收欢迎。我们可以使用Nutch搭建类似Google的完整的搜索引擎系统,进行局域网、互联网的搜索。 2.YaCy YaCy是一款基于P2P(peer-to-peer)的分布式开源Web搜索引擎系统,采用Java语言进行编写,其核心是分布在数百台计算机上的被称为YaCy-peer的计算机程序,基于P2P网络构成了YaCy网络,整个网络是一个分散的架构,在其中所有的 YaCy-peers都处于对等的地位,没有统一的中心服务器,每个YaCy-peer都能独立的进行互联网的爬行抓取、分析及创建索引库,通过P2P网络与其他YaCy-peers进行共享,并且每个YaCy-peer又都是一个独立的代理服务器,能够对本机用户使用过的网页进行索引,并且采取多机制来保护用户的隐私,同时用户也通过本机运行的Web服务器进行查询及返回查询结果。 YaCy搜索引擎主要包括五个部分,除普通搜索引擎所具有的爬行器、索引器、反排序的索引库外,它还包括了一个非常丰富的搜索与管理界面以及用于数据共享的P2P网络。 开源桌面搜索引擎系统 1.Regain regain是一款与Web搜索引擎类似的桌面搜索引擎系统,其不同之处在于regain不是对Internet 内容的搜索,而是针对自己的文档或文件的搜索,使用regain可以轻松地在几秒内完成大量数据(许多个G)的搜索。Regain采用了Lucene的搜索语法,因此支持多种查询方式,支持多索引的搜索及基于文件类型的高级搜索,并且能实现URL重写及文件到HTTP的桥接,并且对中文也提供了较好的支持。 Regain提供了两种版本:桌面搜索及服务器搜索。桌面搜索提供了对普通桌面计算机的文档与局域网环境下的网页的快速搜索。服务器版本主要安装在Web服务器上,为网站及局域网环境下的文件服务器进行搜索。 Regain使用Java编写,因此可以实现跨平台安装,能安装于Windows、Linux、Mac OS及Solaris上。服务器版本需要JSPs环境及标签库(tag library),因此需要安装一个Tomcat容器。而桌面版自带了一个小型的Web服务器,安装非常简单。 [...]

转:B+树的实现代码

这个结构一般用于数据库的索引,综合效率非常高,像 Berkerly DB , sqlite , mysql 数据库都使用了这个算法处理索引。 如果想自己做个小型数据库,可以参考一下这个算法的实现: /* btrees.h */ /* * 平衡多路树的一种重要方案。 * 在 1970 年由 R. Bayer 和 E. McCreight 发明。 */ #define M 1 /* B 树的阶,即非根节点中键的最小数目。 * 有些人把阶定义为非根节点中子树的最大数目。 */ typedef int typekey; typedef struct btnode { /* B-Tree 节点 */ int d; /* 节点中键的数目 */ typekey k[2*M]; /* 键 [...]

转载:基于终端的常用工具

就算 Linux 没有 GUI(图形用户界面),我们在 CLI(命令行界面)中依然能够应付自如。从浏览网络到联络朋友,从获取资源到音影娱乐,从编辑文本到观看图片……在 GUI 中能做的,CLI 也同样可以办到。我想这即是 Linux 的魅力了。 网络浏览:推荐使用 Elinks,Elinks 对于框架、表格以及鼠标的支持都很不错。当然,你也可以将 Lynx、Links、w3m 作为备选。 邮件收发:Mutt + Fetchmail + msmtp 是很好的组合。其中,Mutt 用于邮件的管理,Fetchmail 用来收取邮件,而 msmtp 则用来发送邮件。 联络聊天:CenterICQ 支持 MSN、Jabber、IRC、Yahoo!、AIM、ICQ 等多种即时通讯协议。它同时也具有一个 UTF-8 版本。其他的工具包括 Freetalk(Gtalk 用户适用)、Naim(支持 AIM、ICQ、IRC 等)、Irssi(IRC 用户适用) 等。 新闻阅读:现在通过 RSS 及时获取信息是一种比较流行的方式。你可以使用 Raggle 来满足每天阅读新闻的需求。Raggle 使用 Ruby 所写,它支持各种版本的 RSS、能够导入/导出 OPML、可定制绑定的快捷键。遗憾的是,Raggle 目前不支持中文。Snownews 虽然功能要弱点,但是对于中文支持很好。 文件管理:Midnight Commander(简称 mc)是一个值得使用的文件管理工具。 查看图片:你可以试试 zgv,我也在使用 feh。 [...]

转载:绕口令

【声母】 b-p:补破皮褥子不如不补破皮褥子(《补皮褥子》) b-p:吃葡萄不吐葡萄皮儿,不吃葡萄倒吐葡萄皮儿(《葡萄皮儿》) d:会炖我的炖冻豆腐,来炖我的炖冻豆腐,不会炖我的炖冻豆腐,就别炖我的炖冻豆腐。要是混充会炖我的炖冻豆腐,炖坏了我的炖冻豆腐,哪就吃不成我的炖冻豆腐(《炖冻豆腐》)。 l:六十六岁刘老六,修了六十六座走马楼,楼上摆了六十六瓶苏合油,门前栽了六十六棵垂杨柳,柳上拴了六十六个大马猴。忽然一阵狂风起,吹倒了六十六座走马楼,打翻了六十六瓶苏合油,压倒了六十六棵垂杨柳,吓跑了六十六个大马猴,气死了六十六岁刘老六(《六十六岁刘老六》)。 d-t:大兔子,大肚子,大肚子的大兔子,要咬大兔子的大肚子(《大兔子和大肚子》)。 n-l:门口有四辆四轮大马车,你爱拉哪两辆来拉哪两辆(《四辆四轮大马车》)。 h:华华有两朵黄花,红红有两朵红花。华华要红花,红红要黄花。华华送给红红一朵黄花,红红送给华华一朵红花(《华华和红红》)。 j、q、x:七巷一个漆匠,西巷一个锡匠,七巷漆匠偷了西巷锡匠的锡,西巷锡匠偷了七巷漆匠的漆。(《漆匠和锡匠》)。 g-k:哥挎瓜筐过宽沟,赶快过沟看怪狗。光看怪狗瓜筐扣,瓜滚筐空哥怪狗(《哥挎瓜筐过宽沟》)。 h-f:一堆粪,一堆灰,灰混粪,粪混灰(《一堆粪》)。 z-zh:隔着窗户撕字纸,一次撕下横字纸,一次撕下竖字纸,是字纸撕字纸,不是字纸,不要胡乱撕一地纸(《撕字纸》)。 s-sh:三山撑四水,四水绕三山,三山四水春常在,四水三山四时春(《三山撑四水》)。 z、c、s-j、x司机买雌鸡,仔细看雌鸡,四只小雌鸡,叽叽好欢喜,司机笑嘻嘻(《司机买雌鸡》)。 zh、ch、sh:大车拉小车,小车拉小石头,石头掉下来,砸了小脚指头(《大车拉小车》)。 r:夏日无日日亦热,冬日有日日亦寒,春日日出天渐暖,晒衣晒被晒褥单,秋日天高复云淡,遥看红日迫西山(《说日》)。 sh、四声:石室诗士施史,嗜狮,誓食十狮,氏时时适市,氏视十狮,恃矢势,使是十狮逝世,氏拾是十狮尸,适石室,石室湿,氏使侍拭石室,石室拭,氏始试食十狮尸,食时,始识十狮尸实是十石狮尸,试释是事实(《施氏食狮史》)。 【韵母】 a:门前有八匹大伊犁马,你爱拉哪匹马拉哪匹马(《伊犁马》)。 e:坡上立着一只鹅,坡下就是一条河。宽宽的河,肥肥的鹅,鹅要过河,河要渡鹅。不知是鹅过河,还是河渡鹅(《鹅》)。 i:一二三,三二一,一二三四五六七。七个阿姨来摘果,七个花篮儿手中提。七棵树上结七样儿,苹果、桃儿、石榴、柿子,李子、栗子、梨(《七棵树上结七样儿》)。 u:鼓上画只虎,破了拿布补。不知布补鼓,还是布补虎(《鼓上画只虎》)。 i-ü:这天天下雨,体育局穿绿雨衣的女小吕,去找穿绿运动衣的女老李。穿绿雨衣的女小吕,没找到穿绿运动衣的女老李,穿绿运动衣的女老李,也没见着穿绿雨衣的女小吕(《女小吕和女老李》) er:要说“尔”专说“尔”/马尔代夫,喀布尔/阿尔巴尼亚,扎伊尔/卡塔尔,尼伯尔/贝尔格莱德,安道尔/萨尔瓦多,伯尔尼/利伯维尔,班珠尔/厄瓜多尔,塞舌尔/哈密尔顿,尼日尔/圣彼埃尔,巴斯特尔/塞内加尔的达喀尔,阿尔及利亚的阿尔及尔。 -i(前):一个大嫂子,一个大小子。大嫂子跟大小子比包饺子,看是大嫂子包的饺子好,还是大小子包的饺子好,再看大嫂子包的饺子少,还是大小子包的饺子少。大嫂子包的饺子又小又好又不少,大小子包的饺子又小又少又不好(《大嫂子和大小子》)。 -i(后):知之为知之,不知为不知,不以不知为知之,不以知之为不知,唯此才能求真知(《知之为知之》)。 ai:买白菜,搭海带,不买海带就别买大白菜。买卖改,不搭卖,不买海带也能买到大白菜(《白菜和海带》)。 ei:贝贝飞纸飞机,菲菲要贝贝的纸飞机,贝贝不给菲菲自己的纸飞机,贝贝教菲菲自己做能飞的纸飞机(《贝贝和菲菲》)。 ai-ei:大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦(《大妹和小妹》)。 ao:隔着墙头扔草帽,也不知草帽套老头儿,也不知老头儿套草帽(《扔草帽》)。 ou:忽听门外人咬狗,拿起门来开开手;拾起狗来打砖头,又被砖头咬了手;从来不说颠倒话,口袋驮着骡子走(《忽听门外人咬狗》)。 an:出前门,往正南,有个面铺面冲南,门口挂着蓝布棉门帘。摘了它的蓝布棉门帘,棉铺面冲南,给他挂上蓝布棉门帘,面铺还是面冲南(《蓝布棉门帘》)。 en:小陈去卖针,小沈去卖盆。俩人挑着担,一起出了门。小陈喊卖针,小沈喊卖盆。也不知是谁卖针,也不知是谁卖盆(《小陈和小沈》)。 ang:海水长,长长长,长长长消(《海水长》)。 eng:郑政捧着盏台灯,彭澎扛着架屏风,彭澎让郑政扛屏风,郑政让彭澎捧台灯(《台灯和屏风》)。 ang—an:张康当董事长,詹丹当厂长,张康帮助詹丹,詹丹帮助张康(《张康和詹丹》)。 eng—en:陈庄程庄都有城,陈庄城通程庄城。陈庄城和程庄城,两庄城墙都有门。陈庄城进程庄人,陈庄人进程庄城。请问陈程两庄城,两庄城门都进人,那个城进陈庄人,程庄人进那个城?(《陈庄城和程庄城》) ang—eng:长城长,城墙长,长长长城长城墙,城墙长长城长长(《长城长》)。 ia:天上飘着一片霞,水上飘着一群鸭。霞是五彩霞,鸭是麻花鸭。麻花鸭游进五彩霞,五彩霞挽住麻花鸭。乐坏了鸭,拍碎了霞,分不清是鸭还是霞(《鸭和霞》)。 ie:姐姐借刀切茄子,去把儿去叶儿斜切丝,切好茄子烧茄子,炒茄子、蒸茄子,还有一碗焖茄子(《茄子》)。 iao:水上漂着一只表,表上落着一只鸟。鸟看表,表瞪鸟,鸟不认识表,表也不认识鸟(《鸟看表》)。 iou:一葫芦酒,九两六。一葫芦油,六两九。六两九的油,要换九两六的酒,九两六的酒,不换六两九的油(《酒换油》) ian:半边莲,莲半边,半边莲长在山涧边。半边天路过山涧边,发现这片半边莲。半边天拿来一把镰,割了半筐半边莲。半筐半边莲,送给边防连(《半边莲》)。 in:你也勤来我也勤,生产同心土变金。工人农民亲兄弟,心心相印团结紧(《土变金》)。 iang:杨家养了一只羊,蒋家修了一道墙。杨家的羊撞倒了蒋家的墙,蒋家的墙压死了杨家的羊。杨家要蒋家赔杨家的羊,蒋家要杨家赔蒋家的墙(《杨家养了一只羊》)。 ing:天上七颗星,树上七只鹰,梁上七个钉,台上七盏灯。拿扇扇了灯,用手拔了钉,举枪打了鹰,乌云盖了星(《天上七颗星》)。 ua:一个胖娃娃,画了三个大花活蛤蟆;三个胖娃娃,画不出一个大花活蛤蟆。画不出一个大花活蛤蟆的三个胖娃娃,真不如画了三个大花活蛤蟆的一个胖娃娃。(《画蛤蟆帽》)。 uo(o):狼打柴,狗烧火,猫儿上炕捏窝窝,雀儿飞来蒸饽饽(《狼打柴狗烧火》)。 uai:槐树槐,槐树槐,槐树底下搭戏台,人家的姑娘都来了,我家的姑娘还不来。说着说着就来了,骑着驴,打着伞,歪着脑袋上戏台(《槐树槐》)。 uei:威威、伟伟和卫卫,拿着水杯去接水。威威让伟伟,伟伟让卫卫,卫卫让威威,没人先接水。一二三,排好队,一个一个来接水(《接水)。 uang:王庄卖筐,匡庄卖网,王庄卖筐不卖网,匡庄卖网不卖筐,你要买筐别去匡庄去王庄,你要买网别去王庄去匡庄(《王庄和匡庄》)。 ueng:老翁卖酒老翁买,老翁买酒老翁卖(《老翁和老翁》)。 ong:冲冲栽了十畦葱,松松栽了十棵松。冲冲说栽松不如栽葱,松松说栽葱不如栽松。是栽松不如栽葱,还是栽葱不如栽松?(《栽葱和栽松》) uan—uang:那边划来一艘船,这边漂去一张床,船床河中互相撞,不知船撞床,还是床撞船(《船和床》)。 uan—an:大帆船,小帆船,竖起桅杆撑起船。风吹帆,帆引船,帆船顺风转海湾(《帆船》)。 [...]

百度之星 题目二

2007年5月27号的题目 1.百度时间 Baidu的服务器上使用的不是北京时间,而是Baidu时间。Baidu时间的时分秒与北京时间相同,但是日期与北京时间不同,是用一个正整数表示从2000年1月1日开始经过了几天。 现在就请大家设计一个程序将北京时间转换为百度时间。在本题中,闰年的年份是400的倍数,或者是4的倍数但不是100的倍数。比如2000和8888均为闰年,但6100不是。 输入格式 输入数据的每一行为一个待转化的北京时间(不含空格和TAB),正确的格式包括两种: 一种为:YYYY-MM-DD,(YYYY表示四位数年份,MM为两位月份,DD为两位日期); 另一种为:MM/DD/YYYY,(YYYY表示四位数年份,MM为两位月份,DD为两位日期); 输出格式 每个数据输出一行。如果可以成功转换,输出一个正整数,否则输出Error。 输入样例 例 2000-01-01 AStar2007 05/26/2007 输出样例 例 0 Error 2702 评分规则 1. 程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分; 2. 要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分; 3. 该题共有5个测试数据集,数据1和数据2中的所有日期均能成功转换。所有数据中,每行不超过20个字符,每组数据最多包含100行; 4. 该题目20分。 2.实习生小胖的百度网页过滤器 百度网页采集器(Baiduspider)每天从互联网收录数亿网页,互联网的网页质量参差不齐。百度的工程师们每天都在改进方法来判断一个网页质量的好坏,使质量差的网页出现在检索结果中较后的位置。现在实习生小胖想到一个很简单的方法来判断一个网页内容的好坏,方法如下: 1. 利用数据挖掘技术在互联网语料库中挖掘出一批有特点的词汇,分为好词和坏词两种,好词标上正的权重,坏词标上负的权重; 2. 通过好词和坏词词典对每个网页计算网页总权重:从第一个字开始匹配,找到一个好词则加上相应的权重,找到一个坏词则减去相应的权重,下一次匹配将从找到的词末尾的下一个位置开始。 3. 坏词采用正向最短匹配:从当前匹配位置开始的若干连续汉字,如果形成多个坏词,则只计算最短的那个坏词的权重,下一次匹配将从这个最短坏词末尾的下一个位置开始。 4. 好词采取正向最长匹配:从当前匹配位置开始的若干连续汉字,如果形成多个“有效”好词,则只计算最长“有效”好词的权重,下一次匹配从这个最长“有效”好词末尾的下一个位置开始。 5. “无效”好词的定义:好词的一部分本身是一个坏词;或者好词的一部分与后续相邻的若干字组成一个坏词。 现在小胖已经做好了第1步的工作,有一个好词和坏词的列表(词典),但是由于没有对中文文本处理的程序经验,他想请未来的百度之星们帮他完成这个程序。 输入格式 输入第一行为一个字符串(网页正文)。从第二行开始为词典,格式为“词 空格 词的权重”。权重为一个带符号32位整数。如果权重为正,则为好词,反之则为坏词;不存在重复的词,不存在权重为0的词。 作为“网页”的字符串中同时包含中文和ASCII字符,每个汉字占2个字节。并非“网页”中的所有字都在词典中。 输出格式 输出仅一行,为网页总权重(答案保证不超过带符号32位整数的范围)。 样例输入 例 小胖之喷火龙骑士!! 小胖 6 喷火 [...]

百度之星 题目一

2007年5月26号的题目: 1.水果开会时段 每个百度工程师团队都有一笔还算丰裕的食品经费,足够每天购置多种水果。水果往往下午送达公司前台。前台的姐姐们只要看到同时出现五种或以上的水果,就称之为“水果开会”。 从搜索引擎切词的语法角度,只要两种水果的名字中有一个字相同就属于同样的类别。例如“小雪梨”和“大雪梨”是同一种水果,而“核桃”和“水蜜桃”也被认为是同一种水果。尤其要指出的是,如果有三种水果x, y, z同时在前台出现,且x和y是同一种水果,y和z也是同一种水果的时候,x和z在此时也被认为是同一种水果(即使x和z并不包含相同的字)。现在前台的姐姐们想知道,今天是否有“水果开会”——五种或更多的水果同时在前台出现。 输入格式 输入的第一行只有一个整数n,表示购置水果的组数。接下来的n行表示水果的到达时间、取走时间(时间用1200到1900之间的正整数表示,保证取走时间大于到达时间)。剩下的字符串以空格分割每一种水果。如“1400 1600 雪梨水蜜桃”,表示下午两点到四点(包含两点和四点这两个时间点),雪梨和水蜜桃会在前台等待开会。每种水果名称由不超过十个汉字组成。 输出格式 输出仅一行,包含一个字符串Yes或No,分别表示今天水果开会与否。 输入样例1 例 3 1200 1400 雪梨 柠檬 1300 1400 西瓜 苹果 1400 1800 花生 水蜜桃 输出样例1 例 Yes 输入样例2 例 3 1200 1400 雪梨 柠檬 1400 1500 哦 大梨 呀 1500 1800 咦 大梨 输出样例2 例 No 样例解释 在样例1中,时刻1400有六种水果在前台;在样例2中,由于雪梨和大梨在任何时刻都是同一种水果,最多只有四种水果同时在前台。 评分规则 1. 程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分; 2. [...]

百度之星三

2007年5月26号 百度之星编程比赛 第二题 数7 #include #include //int maxa=10002, maxb=10002, maxc=240003, maxd=2001; #define maxa 10002 #define maxb 10002 #define maxc 240003 #define maxd 2001 int a[maxa], ra[maxa], b[maxb], rb[maxb], c[maxc]; int main() { int digit[10]; int x,y,z,n,mc,mra,mrb; int i,j,k,kk,flag,f; char s[6]; memset(a, 0, sizeof(a) ); memset(ra, 0, sizeof(ra)); memset(b, 0, sizeof(b) ); memset(rb, 0, sizeof(rb)); memset(c, [...]

百度之星二

2007年5月27号 百度之星编程比赛 第四题 inurl 高级查询 #include #include #define maxn 9999 #define maxstrlen 258 int m,n; char site[maxn][maxstrlen], inurl[maxn][maxstrlen]; char str1[maxstrlen], str2[maxstrlen]; char *pos; int main() { int i,j,k; memset(site,’\0′,sizeof(site)); memset(inurl,’\0′,sizeof(inurl)); scanf(“%d”, &n); for(i=0; i