cyk追楠神系列三

cyk追楠神系列三

Description
众所周知,cyk给楠神写了一封信表白。作为有一个有礼貌的五好青年,楠神当然得给 cyk 写一封回信咯,俗称“好人信”。

楠神是一个非常有文采的人,他在信里引用了很多名言来安慰 cyk,有时候他觉得一句话很好的话,他会引用很多次。现在他想考考 cyk,在告诉 cyk 里面每句名言的情况下,看看 cyk 能不能找到每局名言在信里被引用了多少次。如果能找到的话,说明 cyk 也是一个有涵养的人,楠神对 cyk 的好感度就会增加。

cyk 语文和眼力那么差,当然不行咯,所以你赶快帮帮 cyk 吧!

Input
输入数据有多组(数据组数不超过 50),到 EOF 结束。

每组数据第一行输入一串字符串,代表楠神写的回信,长度不超过 10^6。

第二行输出 n (1 <= n <= 100),接下来 n 行每行一个字符串,代表楠神引用的名言,长度不超过 10^6。

Output
每组数据中,对于每句名言输出他被引用的次数,每个答案占一行。

Samples
Sample #1
Input
In fact, maybe we can become good friend, but don’t lose hear for yourselves, when there is a will, there is a way, you can become a better man~
1
when there is a will, there is a way
Output
1
Hint
子串在主串中的匹配允许重叠。

分析:

感觉就是简单KMP,但是用C++一直不对,烦死啦
问题主要就是输入的时候
错误的C++版本

#include <bits/stdc++.h>
#include <string.h>
using namespace std; 
const int N=1e6 +10;
int n,t,m,j,i,sum,b;
char s1[N],s2[N];
int next1[N];
void getnext(){int i=0,j=-1;int len2=strlen(s2);next1[0]=-1;while(i<len2){if(j==-1||s2[i]==s2[j]){i++;j++;next1[i]=j;}else j=next1[j];}
} 
void kmp(){int i=0,j=0,sum=0;int len1=strlen(s1);int len2=strlen(s2);while(i<=len1&&j<=len2){if(j==-1||s1[i]==s2[j]){i++;j++;}else j=next1[j];if(j==len2)sum++;}cout<<sum<<endl;	 
}
int main(){while(cin.getline(s1,256)){cin>>n;getchar();for(int i=0;i<n;i++){
//			memset(s2,0,sizeof(s2));cin.getline(s2,256);getnext();kmp();}}return 0;
}

正确的C版本

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int next[1000005];
void get_next(char s2[])
{int i=0,j=-1;int len2=strlen(s2);next[0]=-1;while(i<len2){if(j==-1||s2[i]==s2[j]){i++;j++;next[i]=j;}else{j=next[j];}}
}
void kmp(char s1[],char s2[])
{int i=0,j=0,cn=0;int len1=strlen(s1),len2=strlen(s2);get_next(s2);while(i<=len1&&j<=len2){if(j==-1||s1[i]==s2[j]){i++;j++;}else{j=next[j];}if(j==len2){cn++;}}printf("%d\n",cn);
}
int main()
{char s1[1000001],s2[1000001];int n;while(gets(s1)!=NULL){scanf("%d",&n);getchar();while(n--){memset(s2,0,sizeof(s2));gets(s2);kmp(s1,s2);}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最长公共子序列和最长公共子串

最长公共子序列 题目描述 给出1,2,…,n 的两个排列P1 和 P2 &#xff0c;求它们的最长公共子序列。 输入格式 第一行是一个数 n。 接下来两行&#xff0c;每行为 n 个数&#xff0c;为自然数1,2,…,n 的一个排列。 输出格式 一个数&#xff0c;即最长公共子序列的长度。…

浅谈iPaaS对企业转型的重要性

面对数字化转型的大浪潮&#xff0c;众多企业都期望着能快速实现全面的数字化转型&#xff0c;让企业在日益激烈的竞争中拥有更稳的市场地位&#xff0c;提升自身的实力及能力&#xff0c;奠定更坚实的基底。但在数字化转型过程中&#xff0c;部分企业数字化基础水平较薄弱&…

Spring Boot注入PasswordEncoder失败

问题 以Autowired方式注入PasswordEncoder对登录密码进行校验&#xff0c;启动时报错如下 Description:Field userService in com.lyx.springboot.controller.UserController required a bean of type org.springframework.security.crypto.password.PasswordEncoder that co…

C语言:国家名称按字母表排序

题目描述 输入一个整数n(n<20)&#xff0c;表示待输入国家的数量。随后输入n个国家或地区的名称 (名称长度为1~30)&#xff0c;要求按字母顺序升序输出。 注意&#xff1a;名称中可能包含空格符。 提示 字符串比较请使用函数&#xff1a; int strcmp(const char* str1&a…

开源软件:推动软件行业繁荣的力量

文章目录 &#x1f4d1;引言开源软件的优势分析开放性与透明度低成本与灵活性创新与协作 开源软件对软件行业的影响推动技术创新和进步促进软件行业的合作与交流培养人才和提高技能促进软件行业的可持续发展 结语 &#x1f4d1;引言 随着信息技术的飞速发展&#xff0c;软件已经…

设计模式Python实现

过年在家瞎折腾&#xff0c;闲着无聊看到设计模式&#xff0c;于是就想着用Python实现一下。 简单工厂 根据传入的参数决定创建出哪一种产品类的实例。 class CashFactory:def createCashAdapter(self, type):if type "满100减20":return CashReturn(100, 20)elif…

Sora爆火,普通人的10个赚钱机会

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

Linux的命令简记

查看网络设置的命令是什么 Ifconfig 要想在PATH中添加命令要用到什么命令 PATH"$PATH":目录的绝对路径 复制文件的命令是什么 Cp 源文件 目标文件 cp命令怎么递归复制 Cp -r Cp命令怎么查询是否覆盖 Cp -i cp命令怎么把文件的权限也都复制过来 Cp -a 如果要复制目录要…

spring boot自动装配

第一步需要在pom.xml文件指定需要导入的坐标 要是没有自动提示需要检查maven有没有 实现代码 /*springboot第三方自动配置实现方法 * 什么是自动配置 自动配置就是springboot启动自动加载的类不需要在手动的控制反转自动的加入bean中 * * *//*第一种方案包扫描 不推荐因为繁琐…

2024 VNCTF----misc---sqlshark sql盲注+流量分析

流量分析 wireshark 可以看到很多 any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(80))),1,0))# P any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(104))),1,0))#…

18-k8s控制器资源-cronjob控制器

job控制器是执行完一次任务&#xff0c;就结束&#xff1b; cronjob控制器&#xff0c;是基于job控制器&#xff0c;定期频率性执行任务&#xff1b;等同于linux系统中的crontab一样&#xff1b; 1&#xff0c;编辑cronjob资源清单 [rootk8s231 pi]# vim cronjob.yaml apiVers…

mfc140u.dll文丢失导致应用程序无法正常,有哪些解决办法

mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;的一个重要组件&#xff0c;它提供了许多用于开发Windows应用程序的功能和工具。然而&#xff0c;当系统或应用程序升级、恶意软件感染或文件损坏以及用户错误操作等情况发生时&#xff0c;mfc140u.dll文…

HarmonyOS—状态管理概述

在前文的描述中&#xff0c;我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面&#xff0c;就需要引入“状态”的概念。 图1 效果图 上面的示例中&#xff0c;用户与应用程序的交互触发了文本状态变更&#xff0c;状态变更引起了UI渲染&#xff0c;UI从“He…

【OrangePi Zero2的系统移植】嵌入式Linux系统的组成、编译u-boot、编译内核、Linux根文件系统

一、嵌入式Linux系统的组成 二、编译u-boot 三、编译内核 四、Linux根文件系统 一、嵌入式Linux系统的组成 嵌入式Linux系统和PC完整的操作系统的对比如下&#xff1a; BIOS和UEFI的作用&#xff1a; a. 进行硬件自检&#xff0c;检测内存&#xff0c;CPU&#xff0c;显卡&a…

使用LlamaIndex和ChatGPT的无代码检索增强生成(RAG)

自从ChatGPT和类似的LLM推出以来&#xff0c;出现了大量的RAG工具和库。人们需要了解如何使用LlamaIndex和ChatGPT的无代码RAG。 检索增强生成(RAG)是使用大型语言模型(LLM)的关键工具。RAG使LLM能够将外部文档合并到它们的响应中&#xff0c;从而更紧密地与用户需求保持一致。…

Servlet要点总结

一、什么是 Servlet Servlet 在开发动态 WEB 工程中&#xff0c;得到广泛的应用&#xff0c;掌握好 Servlet 非常重要了 , Servlet( 基 石 ) 是 SpringMVC 的基础 Servlet(java 服务器小程序 ) &#xff0c;它的特点 : 1. 他是由服务器端调用和执行的 ( 一句话&…

RTC时钟

目录 一、STM32F407内部RTC硬件框图&#xff0c;主要由五大部分组成&#xff1a; 二、硬件相关引脚 三、具体代码设置步骤 四、了解其它知识点 一、STM32F407内部RTC硬件框图&#xff0c;主要由五大部分组成&#xff1a; ① 时钟源 (1)LSE&#xff1a;一般我们选择 LSE&am…

[ 2024春节 Flink打卡 ] -- 理论基础

2024&#xff0c;游子未归乡。工作需要&#xff0c;flink coding。觉知此事要躬行&#xff0c;未休&#xff0c;特记 之后&#xff0c;文档格式整理 文尾有word链接 相关代码陆续上传 Apache Flink 是一个在有界数据流和无界数据流上进行有状态计算分布式处理引擎和框架。Flink…

3 处理机调度和死锁(下)

死锁 引起死锁&#xff1a;需要采用互斥访问的 不可以被抢占的资源&#xff08;临界资源&#xff09; 系统资源分类&#xff1a; 可重用性资源 可消耗性资源可抢占性资源 不可抢占性资源 计算机系统中的死锁 竞争不可抢占性资源引起死锁竞争可消耗资源引起死锁进程推进顺序不…

【EI稳定检索会议】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

#往届均已成功检索# 投稿时邀请码请填H8053 第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09; 2024 5th International Conference on Big Data & Artificial Intelligence & Software Engineering 2024年09月20-22日 | 中国温州 &g…