单词检索

数据结构实训——单词检索统计程序 /***********************************************************   * 版权所有 (C)2016,WuHao  *   * 项目名称:单词检索统计程序   * 其它说明: 各个模块函数    * 作 者:    武昊   * 完成日期: 20161230   ********************************** 阅读详情

题目描述
小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。
由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。
现在他向你求助,需要你编写程序完成这项艰巨的任务。

输入
第1行3个正整数N,M,L,表示文章的数目,单词至少出现在M篇文章中和每个单词的长度。
接下来N行,每行一个字符串,表示一篇文章。
输出
仅一行,表示满足检索条件的单词数。

样例输入
3 2 2
noip
istudycpp
imacppstudent
样例输出
5

提示
这5个单词分别为:st,tu,ud,pp,cp。
对于20%的数据有1≤N,M≤10;
对于60%的数据有1≤N,M≤100;
对于100%的数据有1≤N,M≤2000,L≤1000。每篇文章长度不大于1000,均有小写字母组成。

Solution

人生第一道hash。
以前一直知道hash,是把信息转化成一个整数再放到数组里。但一直没有写过。直到上次考了这道。。。
我们可以把字符串看成一个26进制的数,对每一段字符串,我们记录两个信息。
u表示字符串的小hash值
v表示字符串的大hash值
如果u一样,就把它们链起来,但如果v又一样的话,就有错误了。但v值mod的大质数因为非常大,所以这个出错的概率是很小的。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
int n,m,ap,k1,u,ans,len,tot;
ll v,k2;
char s[1005];
const int minmod=999973; //小质数
const ll maxmod=(ll)(499999999999993); //大质数
struct ty
{
    int p,cnt;
    ll maxhash;
}Hash[1000005];
int head[1000005],Next[1000005];
void add(int x,int y,ll z) //添加进链表
{
    tot++;
    Hash[tot].maxhash=z;
    Hash[tot].cnt=1;
    Hash[tot].p=y;
    Next[tot]=head[x];
    head[x]=tot;
}
void Find(int art,int u,ll v)
{
    for(int i=head[u];i!=-1;i=Next[i]) //遍历小hash值的一条链
    if(v==Hash[i].maxhash) //大hash值一样,就说明字符串一样
    {
        if(art==Hash[i].p) return; //该文章已经出现过,就不用再加了
        Hash[i].p=art; //更新是哪个文章,前面的文章不可能再出现,所以直接更新
        Hash[i].cnt++;
        return;
    }
    add(u,art,v);
}
int main()
{
    cin>>n>>ap>>m;
    for(int i=0;i<minmod;i++) head[i]=-1;
    k1=1;k2=1;
    for(int i=1;i<m;i++) 
    {
        k1=k1*26%minmod; 
        k2=k2*26%maxmod;
    }
    for(int i=1;i<=n;i++) 
    {
        scanf("%s",s+1);
        len=strlen(s+1);
        u=0;v=0;
        for(int j=1;j<=m;j++) 
        {
            u=(u*26+s[j])%minmod;
            v=(v*26+s[j])%maxmod;
        }
        Find(i,u,v);
        for(int j=m+1;j<=len;j++) 
        {
            u=((u-k1*s[j-m])%minmod+minmod)%minmod;//去掉第一位
            v=((v-k2*s[j-m])%maxmod+maxmod)%maxmod;
            u=(u*26+s[j])%minmod;//添加最后一位
            v=(v*26+s[j])%maxmod;
            Find(i,u,v);
        }
    }
    for(int i=1;i<=tot;i++) 
    if(Hash[i].cnt>=ap) ans++;
    cout<<ans;    
    return 0;
}
课程设计三之单词检索统计程序 课设要求 1. 建立一个文本文件,文件名由用户用键盘输入; 2. 给定单词计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数; 3. 检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。 上代码 (标注:采用KMP算法,进行字符串匹配,完成单词统计与定位功能。) //fun.cpp #include"fun.h" #include<io... 阅读详情

相关推荐

文本文件单词的检索与计数

文本文件单词的检索与计数 实验任务 建立一个文本文件,统计给定单词在文本文件中出现的总次数及位置 实现要求 文本文件中每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写,统计给定单词在文本文件中出现的总次数,检索输出的某个单词出现在文本中的行号、在该行中出现的位置。 设计数据量大的文本,进行子串的查询处理,分析算法运行的时间效率,对所有输出的匹配位置结果进行验证,以证明算法设计和实现的正确性。 用朴素模式匹配算法或KMP算法实现字符串定位。 可正确读取,保存文本。 主要设计 为实现数据的有序存储,该

A_FEI_LINUX的博客 974

第四天:字符统计

问题描述   给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。 输入格式   第一行一个数字L。   第二行是字符串S。   L大于0,且不超过S的长度。 输出格式   一行,题目要求的字符串。 输入样例1:   4   bbaabbaaaaa 输出样例1:   bbaa 输入样...

lance~crazy 656

单词词频统计与单词检索

【AHNU | 计信 | 数据结构】本文实现了“单词词频统计与单词检索”,也是数据结构节课的大实验啦~

weixin_52099756的博客 1301

Keywords Search

给定nn个长度不超过5050的由小写英文字母组成的单词准备查询,以及一篇长为mm的文章,问文中出现了多少个待查询的单词。对于每组数据,第一行一个整数nn,接下去nn行表示nn个单词,最后一行输入一个字符串,表示文章。对于全部数据,1\len\le10^4,1\lem\le10^61≤n≤104,1≤m≤106。对于每组数据,输出一个数,表示文中出现了多少个待查询的单词。第一行一个整数TT,表示数据组数;...

weixin_62599885的博客 312

机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

... 2225

219页华为供应链管理:市场预测S&OP计划、销售预测与存货管理精要

S&OP计划的整合作用:S&OP是一种综合的销售和运营计划流程,它将市场预测、生产能力、库存水平和财务目标整合在一起,以确保企业能够平衡供需,实现最佳的运营效率。持续监控与改进:市场预测、S&OP计划、计划委员会的决策以及存货管理都需要持续的监控和评估。供应链策略与执行:华为ISC拥有清晰的供应链策略,并通过SISC架构实现了策略的有效执行,包括供应链网络设计、库存管理、物流优化等。持续的供应链创新:华为ISC不断探索新的供应链管理方法和技术,如数字化供应链、智能物流等,以适应全球化和市场的快速变化。

zuoan1993的博客 2433

单词分析 题目描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。

/* * 题目描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。 现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。 输入描述 输入一行包含一个单词,单词只由小写英文字母组成。 对于所有的评测用例,输入的单词长度不超过 1000。 输出描述 输出两行,第一行包含一个英文字母,表示单词中出现得最多

weixin_46358119的博客 5156

[ADS]单端电感和差分电感的感值和Q值计算公式

单端电感和差分电感的感值和Q值计算公式

乾巽的博客 1万+

【模板】字符串哈希 (【JZOJ3870】单词检索(search))

DescriptionDescriptionDescription 小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可 NNN 篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这 NNN 篇文章中的 MMM 篇文章里出现过,且单词长度为 LLL 。可是,工作量十分庞大,但校长又急需小可可完成...

夕弦 551

基于verilog的16QAM调制

思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2->4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差...

weixin_30725467的博客 2929

全志T527-TP9930-Camera

TP9930 驱动模块主要实现将 4 路的 AHD/TVI/CVBS Camera 的数据转换为 BT656/BT1120 数据,从而实现在 T527 端来对数据进行处理和送显。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3236

单词检索【NOIP2014八校联考第4场第1试10.19】

题目小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。样例输入: 第1行3个正整数N,M

Last_Freezen_yue的博客 767

西门子S7-1200PLC控制步进电机的组态编程和具体步骤

西门子S7-1200PLC控制步进电机的组态编程和具体步骤 硬件准备: 1) 一个S7-1214C DC/DC/DC,订货号:6ES7 214-1AG40-0XB0 2) 一个86系的步进电机+相应的驱动器 3) 一个20A的西门子24V电源(步进驱动器及plc电源) 4) Portal V15版本 组态及编程: 1) 创建一个验证项目,添加cpu( S7-1214C),双击“工艺对象”,选择“运动控制”的TO_PositioningAxis V6.0版本,如下图所示: 2) “确定”后,系统自动生成名

Robot_PLC_HMI_Automation 1万+

KMP文本单词检索

文本单词检索 试题描述:要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,...

Ruanes的博客 1114

《QGIS空间数据处理与高级制图》【目录】

《QGIS空间数据处理与高级制图》是一本面向GIS技术人员和学生的进阶手册,重点提升数据处理效率和专业制图标准化水平。全书涵盖空间数据预处理、矢量编辑、栅格处理、坐标系统应用和符号化设计等核心内容。书中详细介绍了批量数据转换、拓扑检查、遥感影像处理、自定义坐标系创建等实用技能,并提供了模型构建器和PyQGIS脚本实现自动化操作。通过大量实战案例和问题排查指南,帮助读者从基础使用进阶到专业应用,适合测绘、规划、环保等行业的GIS从业者参考使用。

LuckyHanMo的博客 373

【YOLOv11】006、YOLOv11数据增强策略:Mosaic、MixUp等增强技术原理解析

摘要:YOLOv11在产线缺陷检测中遇到小尺寸瑕疵漏检问题,暴露了训练数据过于"干净"的缺陷。数据增强的核心是提升模型泛化能力,而非简单扩充数据。Mosaic增强通过多图拼接迫使模型处理多尺度目标,需注意边界框裁剪细节;MixUp通过线性插值使决策边界更平滑,但需避免类别冲突。自适应增强策略应随训练进度动态调整强度。实际应用中,需针对小目标、类别不平衡等场景调整增强参数,并确保验证与推理流程一致。数据增强应针对性解决具体问题,而非盲目尝试组合。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 365

单词检索程序

word.h头文件#ifndef WORD_H_INCLUDED #define WORD_H_INCLUDED #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;string.h&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; #define LIST_INIT...

qq_35599937的博客 1563

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

单词检索题解

1. 单词检索 (search.pas/c/cpp) 【问题描述】 小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你...

Ansicht's Blog 481

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C语言 文件单词的检索与计数

1.设计要求与分析 建立一个文本文件,每个单词不包含空行且不跨行。检索单词的出现的行数,与位置。 2.具体设计 2.1建立文本文件 2.1.1定义一个串变量 typedef struct{ char cACh[MAXSIZE]; int iLenght; }SEQSTR; 这是一个顺序串 void fileCreate ( ) { int i; SEQSTR STR;

Have a nice day. 4761

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C语言检索单词程序,C语言 文件单词的检索与计数

1.设计要求与分析建立一个文本文件,每个单词不包含空行且不跨行。检索单词的出现的行数,与位置。2.具体设计2.1建立文本文件2.1.1定义一个串变量typedef struct{char cACh[MAXSIZE];int iLenght;}SEQSTR;这是一个顺序串void fileCreate ( ){int i;SEQSTR STR;char cFileName[10],cContinue...

weixin_39866087的博客 1068

单词检索统计文件c语言,课内资源 - 使用C++实现的单词检索统计系统

一、项目简介给定一个文本文件,要求统计给定单词在文本中出现的总次数,并检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。本项目的设计要求可以分为三个部分实现:其一,建立一个文本文件,文件名由用户用键盘输入;其二,给定单词计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。...

weixin_30747571的博客 1503

文本文件单词的检索与计数c语言,文本文件单词的检索与计数

《文本文件单词的检索与计数》由会员分享,可在线阅读,更多相关《文本文件单词的检索与计数(15页珍藏版)》请在人人文库网上搜索。1、文本文件单词的检索与计数专业:软件工程 班级: 1227班 姓名: 王晓春 学号: 2012005774 同组人:王晓春 闫瑞娟 张泽磊 组长:王晓春 完成日期: 2014.6.25 一【问题描述】串是非数值处理中的主要对象,如在信息检索、文本编辑、符号处理等许多领域,...

weixin_32566055的博客 1550

单词检索统计程序(Java)

题目要求: 本项目的设计要求可以分为三个部分实现:其一,建立一个文本文件,文件名由用户用键盘输入;其二,给定单词计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。 建立文件的实现思路是: (1) 定义一个串变量; (2) 定义文本文件; (3) 输入文件名,打开该文件; (4) 循环读入文本行,写入文本文件,其过程如下: while(不是文件输入结束){ 读入一文本行至串变量; 串变量写入

空白的博客 727

使用C++实现的单词检索统计系统

一、项目简介 给定一个文本文件,要求统计给定单词在文本中出现的总次数,并检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。 本项目的设计要求可以分为三个部分实现:其一,建立一个文本文件,文件名由用户用键盘输入;其二,给定单词计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相...

demongwc的博客 1011
上一篇: 选择困难症
下一篇: 积木
ACTY
博客等级 码龄12年 21粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值