链接:https://ac.nowcoder.com/acm/contest/327/G
来源:牛客网

一天,处女座在牛客算法群里发了一句“我好强啊”,引起无数的复读,可是处女座发现复读之后变成了“处女座好强啊”。处女座经过调查发现群里的复读机都是失真的复读机,会固定的产生两个错误。一个错误可以是下面的形式之一:

1.       将任意一个小写字母替换成另外一个小写字母

2.       在任意位置添加一个小写字母

3.       删除任意一个字母

处女座现在在群里发了一句话,他收到了一个回应,他想知道这是不是一个复读机。

输入描述:

两行
第一行是处女座说的话s
第二行是收到的回应t
s和t只由小写字母构成且长度小于100

输出描述:

如果这可能是一个复读机输出”YES”,否则输出”NO”
示例1

输入

abc
abcde

输出

YES

说明

abc->abcd->abcde
示例2

输入

abcde
abcde

输出

YES

说明

abcde->abcdd->abcde

备注:

只要能经过两步变换就从s得到t就有可能是复读机。

思路:最小编辑距离模板。

1.dp[i-1][j]表示word1的前i-1个字符已经转换为word2的前j个字符,这时候word1和word2要想相等必须删除word1的第i个字符

2.dp[i][j-1]表示word1的前i个字符已经转换为word2的前j-1个字符,要想跟前j个字符相匹配,需要添加word2的第j个字符

3.dp[i-1][j-1]表示修改/不修改i和j位置字符

代码:

 #include<bits/stdc++.h>

 using namespace std;
#define INF 0x3f3f3f3f
int dp[][]; /*dp[i][j]表示表示A串从第0个字符开始到第i个字符和B串从第0个
字符开始到第j个字符,这两个字串的编辑距离 。字符串的下标从1开始。*/
char a[],b[]; //a,b字符串从下标1开始 int EditDis() // 模板
{
int len1 = strlen(a+);
int len2 = strlen(b+);
//初始化
for(int i=;i<=len1;i++)
for(int j=;j<=len2;j++)
dp[i][j] = INF;
for(int i=;i<=len1;i++)
dp[i][] = i;
for(int j=;j<=len2;j++)
dp[][j] = j;
for(int i=;i<=len1;i++)
{
for(int j=;j<=len2;j++)
{
int flag;
if(a[i]==b[j])
flag=;
else
flag=;
dp[i][j]=min(dp[i-][j]+,min(dp[i][j-]+,dp[i-][j-]+flag));
//dp[i-1][j]+1表示删掉字符串a最后一个字符a[i]
//dp[i][j-1]+1表示给字符串添加b最后一个字符
//dp[i-1][j-1]+flag表示改变,相同则不需操作次数,不同则需要,用flag记录
}
}
return dp[len1][len2];
}
int main(){
scanf("%s%s",a+,b+);
int ans=EditDis();
if(ans<=)
cout<<"YES";
else{
cout<<"NO";
}
return ;
}
/*
1.dp[i-1][j]表示word1的前i-1个字符已经转换为word2的前j个字符,这时候word1和word2要想相等必须删除word1的第i个字符 2.dp[i][j-1]表示word1的前i个字符已经转换为word2的前j-1个字符,要想跟前j个字符相匹配,需要添加word2的第j个字符 3.dp[i-1][j-1]表示修改/不修改i和j位置字符
*/

 

牛客寒假算法基础集训营2 【处女座与复读机】DP最小编辑距离【模板题】的更多相关文章

  1. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  2. 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  3. 2020牛客寒假算法基础集训营6 C 汉诺塔 (dp 最长下降子序列)

    https://ac.nowcoder.com/acm/contest/3007/C 将木板按照Xi从小到大排序,将这时的Yi数列记为Zi数列,则问题变成将Zi划分为尽可能少的若干组上升子序列. 根据 ...

  4. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  5. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  6. Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)

    链接:https://ac.nowcoder.com/acm/contest/330/G来源:牛客网 Applese 的毒气炸弹 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262 ...

  7. 牛客寒假算法基础集训营4 I题 Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...

  8. 牛客寒假算法基础集训营4 I Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串. ...

  9. 欧拉函数-gcd-快速幂(牛客寒假算法基础集训营1-D-小a与黄金街道)

    题目描述: 链接:https://ac.nowcoder.com/acm/contest/317/D来源:牛客网小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿 ...

随机推荐

  1. 【洛谷】P4883 mzf的考验

    [洛谷]P4883 mzf的考验 最近忽然放弃治疗开始随机跳题了 感觉还行 就是必须吸氧感觉有点糟糕... 这题翻转和求和都是平衡树基本操作,那个异或可以通过维护树中\(2\)进制下第\(2^{i}\ ...

  2. vue去掉链接中的#

    在router.js中修改, const router = new VueRouter({ mode: 'history', routes: [...] })

  3. linux安装java jdk

    一.检查是否已经安装java jdk. 检查是否有自带的openJdk, 若有将其卸载删除.详情第四步 二.jdk下载安装. 1.创建文件夹 mkdir /usr/local/java #自选目录,一 ...

  4. springboot通过slf4j配置日志

    原因:SpringBoot默认使用slf4j日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉: 而我今天想引入log4j的时候,pom文件一直报错,显示找不到log4j的jar包,应当是 ...

  5. 面试官:Kafka 如何优化内存缓冲机制造成的频繁 GC 问题?

    Jusfr 原创,转载请注明来自博客园 Request 与 Response 的响应格式 Request 与 Response 都是以 长度+内容 形式描述, 见于 A Guide To The Ka ...

  6. Java多线程(九):生产者消费者模型

    生产者消费者模型 生产者:生产任务的个体: 消费者:消费任务的个体: 缓冲区:是生产者和消费者之间的媒介,对生产者和消费者解耦. 当 缓冲区元素为满,生产者无法生产,消费者继续消费: 缓冲区元素为空, ...

  7. SQL Prompt 注册后隔一段时间莫名无法使用的处理

    https://blog.csdn.net/anyqu/article/details/88537197 以前一直以为是授权丢了,反复重装也解决不了 Sql Prompt---Unable to co ...

  8. 安装 node.js npm,cnpm

    参考:https://blog.csdn.net/suiyuehuimou/article/details/74143436 https://www.liaoxuefeng.com/wiki/0014 ...

  9. 记一次邮件推送的坑,c#基于smtp使用腾讯企业邮箱发送邮件总是失败的原因

    今天在弄企业邮箱推送的东西,原版代码是这样的 public void SendEmail(string title, string content) { try { MailMessage mailM ...

  10. FLEX AIR 读写安卓本地文件

    1.  目标: 将字节流图片保存在安卓本地路径,如 "/data/mypppd/"下, file = File.documentsDirectory.resolvePath(&qu ...