最长匹配问题

题目描述
A newly opened detective agency is struggling with their limited intelligence to find out a secret information passing technique among its detectives. Since they are new in this profession, they know well that their messages will easily be trapped and hence modified by other groups. They want to guess the intensions of other groups by checking the changed sections of messages. First they have to get the length of longest match. You are going to
help them.
输入
The input file may contain multiple test cases. Each case will contain two successive lines of string. Blank lines and non-letter printable punctuation characters may appear. Each Line of string will be no longer than 1000 characters. Length of each word will be less than 20 characters.
输出
For each case of input, you have to output a line starting with the case no right justified in a field width of two, followed by the longest match as shown in the sample output. In case of at least one blank line for each input output ‘Blank!’. Consider the non-letter punctuation characters as white-spaces.
题目大意:对于输入的一组数据,要找到最长的公共单词长度,只要将单词转化为字母就可以把此问题转化为最长公共子序列的问题,所以本问题重点在于如何对单词进行转化。
首先对每个单词提取出首字母,然后先对句子中短单词个数进行处理(好比late-breaking分成两个单词),然后再对单词个数进行一次排查(防止出现“,,”“-,”这样的连续字符出现在句子里影响对单词个数的判断)

#include <cstdio>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
int f[1010][1010];
struct node
{int num;string word[1010];
};void spa(string s,node &t)
{int len=s.length();t.num=1;for(int i=0;i<len;i++){if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='0'&&s[i]<='9'))t.word[t.num]+=s[i];elset.num++;//所得num即为单词个数 }int n=0;for(int i=1;i<=t.num;i++) {if(!t.word[i].empty())t.word[++n]=t.word[i];}t.num=n;
}
int main()
{int pp=1;string x,y;node t1,t2;while(!cin.eof()){string x,y;node t1,t2;getline(cin,x);spa(x,t1);getline(cin,y);spa(y,t2);printf("%2d. ",pp++);if(x.empty()||y.empty()){printf("Blank!\n");continue;}memset(f,0,sizeof(f));for(int i=1;i<=t1.num;i++){for(int j=1;j<=t2.num;j++){if(t1.word[i]==t2.word[j])f[i][j]=max(f[i-1][j-1]+1,f[i][j]);elsef[i][j]=max(f[i-1][j],f[i][j-1]);}}printf("Length of longest match: %d\n",f[t1.num][t2.num]);}return 0;
}

empty()函数用于判断容器是否为空
(判断变量是否定义且不为NULL,’’,0,false)
当容器为空返回true
当容器不为空返回false

2021-10-15相关推荐

  1. 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场

    电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场 无限长均匀电流 无限长圆柱面均匀电流密度 无限长均匀电流 假设z轴上有一根非常细的电线,携带均匀电流I0I_0I ...

  2. Python 最近两条好消息:①TIOBE排名超过C和Java②新版本发布3.10.0,还有今天刚发布的《What’s New in Python(2021.10.15)》

    来自TIOBE的最新10月份统计数据显示,Python首次超越Java.JavaScript.C语言等,成为最受欢迎的编程语言.TIOBE过去20年一直在追踪编程语言的受欢迎程度,其数据来自于对25个 ...

  3. 2021.10.15市场分析9月中旬以来,私募量化产品业绩普遍回撤,而指数增强产品回调更为突出。针对量化私募产品业绩流言不断,为切实保护投资者合法权益,包括灵均、九坤投资、因诺、卓识、天算量化、时代复

    疫情以来,美国史无前例的大放水的始作俑者除了美联储,还有美国财政部,其通过 TGA(美国财政部一般账户)压降(放缓债券发行速度并减少现金储备)向市场投放了大量的流动性.从今年2月开始,财政部从其在美联 ...

  4. 第72课 函数与最大值-2021.10.15

    /* 定义一个求两个整数最大值的函数,利用它求出5个整数的最大值. */ #include<iostream> using namespace std; int ans; //全局变量,此 ...

  5. 2021.10.15数字货币小计

    今天大盘收btc期货可能通过的消息,btc冲向60000点,现在收涨4.27个点,收在59775点,今天shibswap在发布nft之后,shib就开始泄水,现在收跌7.46个点,leash更是夸张, ...

  6. Day19-22 2021/10/13-16 JAVA贪吃蛇 全注释版

    Day19-22 2021/10/13-16 贪吃蛇 帧:如果时间足够小 就是动画 键盘监听 定时器 Timer package snale; import javax.swing.*; /*** @ ...

  7. 2021.10.25-10.31 AI行业周刊(第69期):AI进化之路

    本周<Opencv基础及AI项目实战>以及<Pytorch模型推理及多任务通用范式>两门课程已经完结. 两门课程中,针对所有完成作业的同学,都颁发了毕业证书. 并且对于完成比较 ...

  8. 2021.1.15——星露谷作物计算器的小改进

    2021.1.15--星露谷作物计算器的小改进 前言 目标 excel表格 代码 总结 前言 2021.1.13做的星露谷作物计算器,初步只完成了对excel表内数据和图表的生成,交互也只是input ...

  9. cas112-79-4/中介四(3-羟基苯基)卟吩/5,10,15,20-四(3-羟基苯基)卟啉/MESO-四(间-苯酚)卟啉/3,3‘,3‘‘,3‘‘‘-(卟啉-5,10,15,20-四基)四酚

    英文名称:5,10,15,20-tetra(3-hydroxyphenyl)porphyrin 中文名称:5,10,15,20-四(3-羟基苯基)卟啉 其它名称:中介四(3-羟基苯基)卟吩;5,10, ...

  10. 最详细AMD Ryzen CPU,VMware 15安装macOS 10.15.x Catalina 记录(第一篇)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 安装介绍 安装方式 成功案例 前期准备 工具准备 VMware Workstation 15. ...

最新文章

  1. python数学建模基础教程_Python数学建模极简入门(二)差分方程
  2. Linux进阶:DNS详解
  3. Java黑皮书课后题第5章:*5.31(金融应用:计算CD价值)假设你用10 000美元投资一张CD,年利率为5.75%。编写程序,提示由用户输入一个金额数、年获利率、月份数,然后显示一个表格
  4. Web前端一种动态样式语言-- Less
  5. 惠普服务器吊牌位置,惠普防伪措施 | 惠普中国
  6. 七牛直播云服务技术揭秘
  7. UIButton的竖排图片和文本
  8. 新手程序员不知道的小技巧!
  9. 高德软件有限公司python试题 及 答案
  10. Dao层抽取BaseDao公共方法
  11. nhibernate配置教程
  12. mysql 核心笔记 逻辑符号 like
  13. flask-mail异步发送邮件_Spring Boot与异步任务、定时任务、邮件任务
  14. 字符串(strlen)
  15. 块元素和行内元素的说明及转换
  16. 知行功夫为本,找对心中的英雄,过好平凡的生活
  17. Hydra暴力破解smb协议(Windows用户名和密码)
  18. 考研倒计时一幕刷屏!网友:这一定是最接近梦想的人!
  19. storm和vgj vgj_风暴很忙:VGJ.Storm新阵容亮相DAC预选赛
  20. 360极速浏览器插件不见了

热门文章

  1. 编辑视频贴纸软件_3招教你搞定怎么在视频上加贴纸,剪片必备的手机App!
  2. 手把手教会你视频转文字怎么弄,这个方法建议收藏备用
  3. GIT 命令学习:获取与创建项目
  4. 服务器主动推送消息数据给客户端
  5. 使用unity制作的一款生存类游戏demo(一)
  6. oracle12c 环境需求,Oracle12C之环境准备工作
  7. 苹果为M1 MacBook Air/Pro提供自助维修服务 维修成本更低
  8. PHP 一一 微信公众号开发(二次开发)
  9. IndProp章节中pumping lemma的证明
  10. 关于Cat,同轴,光纤等以太网电缆的所有信息