博文

google代码搜索的标准KMP算法实现(2007-10-24 11:59:00)

摘要:             这是我在google 上的代码搜索出来的KMP算法我觉得写的还可以啊,自己拿来学学。 KMP.h#ifndef _KMP_H_ #define _KMP_H_ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ extern int KMP(const char* strPattern, int len, const char* strTarget); extern void KMP_end(); #ifdef __cplusplus } #endif /* __cplusplus */ #endif 申明一下。这个KMP是在字典程序中的一段。所以这个他用来申明的外部函数。KMP.cpp#include <stdio.h> #include <stdlib.h> #include <string.h> #include "kmp.h" static int* prefix = NULL; static int max_size = 0; static void GetPrefixValue(const char* strPattern, int iPatternLen) { if (iPatternLen>max_size) { prefix = (int*)realloc(prefix, iPatternLen*sizeof(int)); max_size = iPatternLen; } int i, j; /* i runs through the string, j counts the hits*/ i = 1; j = 0; prefix[0] = 0; while(i<iPatternLen) { if(s......

阅读全文(4015) | 评论:0

百度之星程序设计大赛初题目(2007-04-21 00:49:00)

摘要:1.百度语言翻译机 百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中都会大量运用。 为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩略语和专有名词翻译成日常语言。 输入要求:输入数据包含三部分:1. 第一行包含一个整数N(N<=10000),表示总共有多少个缩略语的词条;2. 紧接着有N行的输入,每行包含两个字符串,以空格隔开。第一个字符串为缩略语(仅包含大写英文字符,长度不超过10字节),第二个字符串为日常语言(不包含空格,长度不超过255字节);3. 从第N+2开始到输入结束为包含缩略语的相关文档(总长度不超过1000000个字节)。例:6PS 门户搜索部NLP 自然语言处理PM 产品市场部HR 人力资源部PMD 产品推广部MD 市场发展部百度的部门包括PS,PM,HR,PMD,MD等等,其中PS还包括NLP小组。样例:in.txt 输出要求:输出将缩略语转换成日常语言后的文档。(将缩略语转换成日常语言,其他字符保留原样)。例:百度的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。样例:out.txt 2.饭团的烦恼 “午餐饭团”是百度内部参与人数最多的民间组织。同一个部门的、同一所大学的、同一年出生的、使用同一种型号电脑的员工们总是以各种理由组织各种长期的、临时的饭团。 参加饭团,不仅可以以优惠的价格尝到更加丰富的菜式,还可以在吃饭的时候和同事们增进感情。但是,随着百度的员工越来越多,各个饭团的管理变得繁杂起来。特别是为了照顾员工们越来越挑剔的胃,饭团的点菜负责人的压力也越来越大。现在,这个任务就交给“百度之星”了,因为,你将要为所有的百度饭团设计一个自动点菜的算法。 饭团点菜的需求如下:1.经济是我们要考虑的一个因素,既要充分利用百度员工的午餐补助,又不能铺张浪费。因此,我们希望最后的人均费用越接近12元越好。2.菜式丰富是我们要考虑的另一个因素。为简单起见,我们将各种菜肴的属性归结为荤菜,素菜,辛辣,清淡,并且每个菜只能点一次。3.请谨记,百度饭团在各大餐馆享受8折优惠。 输入要求:1.输入数据第一行包含三个整数N,M......

阅读全文(2738) | 评论:0

蛇型矩阵的最简解(整体观察法)(2007-04-15 13:19:00)

摘要:蛇行矩阵 Problem蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 Input本题有多组数据,每组数据由一个正整数N组成。(N不大于100) Output对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。 矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 Sample Input5Sample Output1 3 6 10 152 5 9 144 8 137 1211 整体观察法思想:    先看输出;将它旋转45度你将看到;            1        2    3     4     5    6  7     8    9    10  11   12   13    14  15 其实这样也可以做解了。但是还有跟好的能看的很清楚的.你再让这组数往左边靠你将看到. 1 2    3 4       5       6 7       8     9    10 11   12   13   14   15 现在你可以看到什么?你看没行的最后一个元素.1 3 6 10 15.再往斜的继续看得到下行.2 5 9 14.再下.4  8 13.再下.7 12.最后.11.没色做为一行.你再摆下来。 1 3  ......

阅读全文(3045) | 评论:2