HDOJ1251(前缀匹配---分块查找&map应用)
分块查找算法
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int SIZE=+;
const int BLOCKS=; //块的大小
char word[SIZE][];
char pre[];
int Num[];
bool isPre(char mo[],char so[])
{
int i=,j=;
while(mo[i]&&so[j])
{
if(mo[i]!=so[j])
return false;
i++;
j++;
}
if(so[j]=='\0')
return true;
return false;
}
int main()
{
int cnt=;
char fin[]={'\0'};
while(gets(fin))
{
if(fin[]=='\0')
break;
int key=fin[]-'a';
int pos=key*BLOCKS+Num[key];
Num[key]++;
strcpy(word[pos],fin);
} while(scanf("%s",pre)!=EOF)
{
int num=; int key=(pre[]-'a');
int start=key*BLOCKS; for(int i=start;i<start+Num[key];i++)
{
if(isPre(word[i],pre))
num++;
} printf("%d\n",num);
} return ;
}
利用STL库中的map解决
#include<iostream>
#include<cstdio>
#include<string>
#include<map>
using namespace std;
map<string, int> word;
int main()
{
string x="";
while(true)
{
char a;
scanf("%c",&a);
if(a=='\n')
{
scanf("%c",&a);
x="";
}
if(a=='\n')
break;
x+=a;
word[x]++;
} string pre;
while(cin>>pre)
{
cout<<word[pre]<<endl;
}
//感受到STL的威力了么
return ;
}
HDOJ1251(前缀匹配---分块查找&map应用)的更多相关文章
- CIDR详解和ip最长地址前缀匹配
1.CIDR是什么 无类域间路由(CIDR)编址方案 摒弃传统的基于类的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率. 就是一个ip加一个网络掩码,不过这个掩码不是之前只有3个值 ...
- php第五天-正则表达式,字符串的匹配与查找函数,数组切割
在php中有两套正则表达式,两者功能相似,一套是由PCRE,使用"preg_"为前缀命名的函数,一套是由POSIX拓展提供的,使用以"ereg_"命名的函数 0 ...
- C语言两种查找方式(分块查找,二分法)
二分法(必须要保证数据是有序排列的): 分块查找(数据有如下特点:块间有序,块内无序):
- c语言完成分块查找
首先要把一系列数组均匀分成若干块(最后一个可以不均匀) 每块中元素任意排列,即块中数字无序,但是整个块之间要有序.因此也存在局限性. #include<stdio.h> //分块查找法 v ...
- 【python cookbook】【字符串与文本】4.文本模式的匹配和查找
问题:按照特定的文本模式进行匹配或查找 解决方法: 1.简单的文字匹配,只需使用str.find().str.startswith().str.endswith()或类似的函数即可: 2.复杂的匹配, ...
- 索引查找(索引查找、分块查找) C语言实现
1.基本概念 索引查找又称分级查找. 索引存储的基本思想是:首先把一个集合或线性表(他们对应为主表)按照一定的函数关系或条件划分成若干个逻辑上的子表,为每个子表分别建立一个索引项,由所有 这些索引项构 ...
- 查找->静态查找表->分块查找(索引顺序表)
文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...
- mysql 最左前缀匹配原则
1.在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,示例:对列col1.列col2和列col3建一个联合索引 KEY index_col1_co ...
- 分块查找(Blocking Search)
1.定义 分块查找(Blocking Search)又称索引顺序查找.它是一种性能介于顺序查找和二分查找之间的查找方法. 2.基本思想 分块查找的基本思想是: (1)首先查找索引表 索引表是有序表,可 ...
随机推荐
- 数据处理 数据入数据库 与 Excel
Python 数据处理 中间数据 Excel 团队交流分工 低的沟通成本 数据入数据库 如postgresql
- Android笔记之AsyncTask
AsyncTask中的4个回调 onPreExecute(),在doInBackground(Params...)之前运行在UI线程中 onPostExecute(Result),在doInBackg ...
- IOS navigationItem 设置返回button,title图片和rightBarButtonItem
1.自己定义返回button UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" st ...
- python数据分析之:时间序列二
将Timestamp转换为Period 通过使用to_period方法,可以将由时间戳索引的Series和DataFrame对象转换为以时期索引 rng=pd.date_range('1/1/2000 ...
- android 多语言(在APP里面内切换语言)
创建SharedPreferences的管理类 public class PreferenceUtil { private static SharedPreferences mSharedPrefer ...
- struts2中的ModelDriven使用
http://www.cnblogs.com/Topless/archive/2012/01/17/2324980.html 例子都为struts2中的文档例子 JSP提交数据: <s:fo ...
- C#泛型命名潜规则
public class List<T>{} public class LinkedList<T>{} public class SortedList<TKey,TVal ...
- Yii2发送短信验证码完全解决方案
概述 在做项目的时候,需要用到短信发送验证码功能.不能不说Yii2的牛逼,很容易就搞定了.下面我整理一下具体功能和流程,分享给大家. 主要功能 通过Yii2 rules验证手机号 通过js验证是否为手 ...
- 爬虫 spider
python 2.x # -*- coding: utf-8 -*-import reimport urllib url = 'http://tieba.baidu.com/p/4872795764' ...
- Spring Cloud之Hystrix雪崩效应解决方案
基于Hystris解决雪崩效应: 1.服务降级: 防止用户一直等待,使用降级方式,调用FallBack(返回友好提示,不会去处理请求) 案例: 当前请求人数过多,请稍后重试 2.服务熔断:(和服 ...