• 2G.处女座与复读机(C++)


    处女座与复读机(C++)

    点击做题网站链接

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

    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就有可能是复读机。

    解题代码:

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int key = 0;
    string s, t;
    
    void dfs(int a,int b,int Count)
    {
        if( Count>2 )
            ;//超过两次修改
        else if( a==s.size() && b==t.size() ) key = 1;//如果两者的长度都为0
        else if( s[a]==t[b] ) dfs(a+1,b+1,Count);//递归循环
        else
        {
            dfs(a+1,b,Count+1);//添加
            dfs(a+1,b+1,Count+1);//修改
            dfs(a,b+1,Count+1);//删除
        }
    }
    
    int main()
    {
        cin >> s >> t;
        dfs(0,0,0);
        if( key ) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    
  • 相关阅读:
    算法大佬推荐
    学习的两个docker指令
    ie兼容问题解决记录
    缓存函数,curry与偏函数
    uni-app开发时遇到的注意点
    let,var,const区别
    递归的简单理解
    宏任务和微任务的进一步理解
    简单实现一个观察者模式
    业余时间
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626112.html
Copyright © 2020-2023  润新知