QUTOJ 1361 字符串匹配 暴力
来源:互联网 发布:sai软件如何使用 编辑:程序博客网 时间:2024/05/21 13:54
1361: 字符串的匹配
时间限制: 1 Sec 内存限制: 128 MB提交: 37 解决: 12
题目描述
相信大家都做许多的字符串匹配问题了,一天,503集训室的俊哥突然想出了新点子。现在给你两个字符串a,b求最长公共子串。对于是字符串匹配大师的你来说,这个再简单不过了。但是,如果现在你有k次修改机会,每次你都可以选择其中某个串的某个位置。将其修改成任意字符。
你需要合理使用这k次修改机会,使得修改后字符串的最长公共子串最长。相信这个对于你来说也很简单。
输入
题目中有多组数据,每组数据的第一行为一个整数k。表示修改次数。
输入数据的第二行和第三行是a,b两个字符串。题目保证每个串的长度不超过500。
输出
输出每一行为一个整数,表示修改后的两个串的最长公共子串长度。
样例输入
0abcde
jcdkl
2
aaaaaababa
样例输出
25
我邀请赛时一直以为这个最长公共子串都是不连续的,没想到这个题是连续的,这个东西需要根据题目要求来,我还以为是dp呢,结果瞎搞就过;
思路:直接暴力扫两个字符串,这里哪个字符串长没有关系,因为你通过长的去找短的公共的和短的去找长的公共的不影响结果的,
如果比较时候两个字符相等就继续后移,如果不等当K不等于0时则相当于修改一个字符k--,每次遍历过后去最大值即可;
#include<iostream>#include<cstdio> #include<cstring>#include<cmath>#include<algorithm>using namespace std;char s1[550],s2[550];int main(){ int k,i,j,q1,q2,count,ans; while(cin>>k) { getchar(); ans=-1; scanf("%s",s1); scanf("%s",s2); int len1=strlen(s1); int len2=strlen(s2); for(i=0;i<len1;i++) for(j=0;j<len2;j++)//从每一个起点开始. { q1=i; q2=j; count=0; int x=k; while(q1<len1&&q2<len2)//从起点开始依次往后找. { while(q1<len1&&q2<len2&&s1[q1]==s2[q2]) { q1++; q2++; count++; } if(x)//修改字符 { q1++; q2++; count++; x--; } else break; } ans=max(ans,count); } cout<<ans<<endl; } return 0; }
1 0
- QUTOJ 1361 字符串匹配 暴力
- 暴力字符串匹配
- 字符串匹配---暴力求解
- 暴力字符串匹配
- 字符串匹配(暴力匹配)
- poj 1226 暴力字符串匹配
- 字符串匹配-暴力搜索算法
- 字符串匹配暴力算法 与 字符串匹配的KMP算法
- POJ 2403 字符串匹配 暴力过
- Cutting (暴力 + 滚动哈希判字符串匹配)
- 字符串匹配:暴力,KMP,horsepool实现(1)
- QUTOJ 飘飘和小石(简单搜索+暴力)
- QUTOJ 1356: 小E和1 思维暴力
- QUTOJ 1357:小E与计算器 暴力搞
- 字符串匹配算法(暴力匹配和KMP)
- 字符串匹配之---BF算法(暴力破解法)
- 字符串匹配的算法(暴力算法和KMP算法)
- 基于JavaScript的字符串暴力匹配算法(BF算法)
- 【ARM-Linux开发】打包解包命令
- ubuntu 16.04 安装 qtcreator
- C语言基础总结之琐碎知识点
- Logback 简介
- ListFragment的使用
- QUTOJ 1361 字符串匹配 暴力
- 使用Rubymine的ruby on rails 学习历程①
- scrapy源码分析(三)---------ExecutionEngine(二)一个request的周期
- 仿真工具NS3的基本知识
- Spring Boot 2.0.0参考手册_中英文对照_Part IV_24
- Servlet开发的一些细节问题
- Spring Boot 2.0.0参考手册_中文版_Part IV_24
- n的阶乘相加
- POJ - 2891 Strange Way to Express Integers(同余方程组)