大致题意:

  • 有一个A字符串和一个B字符串,
  • 操作将A或A的一个后缀修改为B,
  • 求最少的操作数。
  • 有三个操作为:
    • 删除: 删除掉 A 中的某一个字符。
    • 添加: 将某一个字符添加到 A 中任意位置。
    • 替换: 将 A 中某一字符替换为另一个。

基本思路:

  • 我最不擅长的的就是dp,然后这题就是dp。。。/kk

  • 我看到dp就发怵啊,虽说一腔热血在胸膛想了又想,但还是避免不了wa的遭遇。

  • 然后看了一位大佬的博客戳我,我丢,居然这么简单。

  • (虽说他视频讲了一次,但我感觉他的文字比他讲的好多了

  • 咳咳,不说废话了。

  • 以f[i][j]表示将A的前i为操作为B的前j位的最少操作数。

  • 然后就找方程啦。就有三个方式来推出f[i][j]。

  • 第一个方式:

  • 第二个方式:

  • 第三个方式:

  • 三个方式都好了,取最小的一个就是f[i][j]的答案了呢。

  • 然后最后的答案就是f[ A的长度 ][ B的长度 ]。

Code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <list>
using namespace std;
#define R read()
#define GC getchar()
#define ll long long
#define ull unsigned long long
#define INF 0x7fffffff
#define LLINF 0x7fffffffffffffff
ll read(){
ll s=0,f=1;
char c=GC;
while(c<'0'||c>'9'){if(c=='-')f=-f;c=GC;}
while(c>='0'&&c<='9'){s=s*10+c-'0';c=GC;}
return s*f;
}
char a[1010],b[1010];
int aLen,bLen;
int f[1010][1010];
int main(){
cin>>a+1>>b+1;//"黑科技",下标以1开始,但是有些字符串的东西就不能用了
aLen=strlen(a+1);
bLen=strlen(b+1);
for(int i=1;i<=aLen;++i){//初始化
f[i][0]=0;
}
for(int i=1;i<=bLen;++i){
f[0][i]=i;
}
for(int i=1;i<=aLen;++i){
for(int j=1;j<=bLen;++j){
f[i][j]=min(f[i-1][j-1]+(!(a[i]==b[j])),min(f[i-1][j]+1,f[i][j-1]+1));
//递推公式
}
}
printf("%d",f[aLen][bLen]);//输出
return 0;
}

T133316 57级返校测试重测-T4-字符串的修改的更多相关文章

  1. T133309 57级返校测试重测-T2-选票统计

    大致题意: 找出个数超过n/4的数们. 基本思路: 一开始我是用map做的,然后就很玄学的TLE了. 啊,那就换个法吧. 先排个序,然后一样的数就在一起了, 再然后直接从前往后遍历一下,就能得出结果了 ...

  2. T133308 57级返校测试重测-T3-成绩单

    大致题意: 给定n个学生的学号和分数, 求各个分数段的人数, 求把学号排序后的序列, 求满分的人数以及学号. 基本思路: 虽然看起来很繁琐(?),但就非常非常的简单,直接按题意做就好了. 然后有个坑, ...

  3. T133305 57级返校测试重测-T1-数字配对

    大致题意: 给定偶数个的数字,操作使得两两配对后的最大值最小. 基本思路: 先排序,然后设i=1,j=n(序列以下标1开始), 每次配对为a[i]+a[j],然后++i,--j. 最后找到最大的配对结 ...

  4. T4 字符串的修改 题解

    有 A=a1a2a3„am,B=b1b2b3„bn 两个字符串(均为小写字母)现在要通过以下操作将 A 或 A 的一个后缀修改为 B: 1. 删除 删除掉 A 中的某一个字符. 2. 添加 将某一个字 ...

  5. python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制

    一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...

  6. app测试、web测试-怎么测?

    app测试 前言 看过许多大神对APP测试的理解,博主总结了一下我们平时测试APP应该注意的一些测试点并结合大神的理解,总结出这篇文章. 一.测试周期 测试周期一般为两周,根据项目情况以及版本质量可适 ...

  7. Xcode 真机测试破解方法(转加修改)xcode 4.3 通过

    Xcode 真机测试破解方法(转加修改)xcode 4.3 通过 生成本机证书 应用程序->实用工具->钥匙串访问 菜单:钥匙串访问->证书助理->创建证书, 然后按以下图片顺 ...

  8. 【2014广州市选day1】JZOJ2020年9月12日提高B组T4 字符串距离

    [2014广州市选day1]JZOJ2020年9月12日提高B组T4 字符串距离 题目 Description 给出两个由小写字母组成的字符串 X 和Y ,我们需要算出两个字符串的距离,定义如下: 1 ...

  9. App测试需要测什么

    App,做为当下最热的手机安装软件,无论是产品本身的设计还是性能,易用性等都是非常受考验.一个app能在用户的手机上使用,并作为一个长期用户是非常不容易的.那么,App的测试中我们到底要测试什么呢? ...

随机推荐

  1. 解除git文件处于lock状态方法

    解决办法: 去git文件夹下删除lock文件就可以

  2. Sharding-JDBC 快速入门第一课

    1.  概述 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Sharding-Sidecar(计划中)这 ...

  3. JDK开发环境的搭建和环境变量的配置

    首先博主先说一下JDK.JRE.JVM的区别和联系.我们正常运行程序的话只需安装JRE就行啦,如果要编译运行Java程序就得需要JKD下的bin目录下的编译工具. JDK -- java develo ...

  4. dart快速入门教程 (7.3)

    7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...

  5. vue全家桶(3.3)

    4.7.作为vue的插件使用 在vue中,我们不需要在每个组件中都去引入axios,这样使用起来比较麻烦,我们可以结合插件vue-axios,让操作更简化 1.安装插件 npm install vue ...

  6. JavaScript基础对象创建模式之命名空间(Namespace)模式(022)

    JavaScript中的创建对象的基本方法有字面声明(Object Literal)和构造函数两种,但JavaScript并没有特别的语法来表示如命名空间.模块.包.私有属性.静态属性等等面向对象程序 ...

  7. [CEOI1999]Parity Game 题解

    P5937 [CEOI1999]Parity Game 洛谷P5937 P5937 [CEOI1999]Parity Game 前言: 个人感觉这道题初看想不到并查集啊!(说实话我题都没读懂,第二遍才 ...

  8. 在 XUnit 中使用依赖注入

    在 XUnit 中使用依赖注入 Intro 之前写过一篇 xunit 的依赖注入相关的文章,但是实际使用起来不是那么方便 今天介绍一个基于xunit和微软依赖注入框架的"真正"的依 ...

  9. springSecurity使用

    目录 1.1 依赖包导入 2.1 没有安全机制下的一个web 3.1 做一个安全机制的web 官网https://spring.io/guides/gs/securing-web/ 无情的翻译官... ...

  10. 利用IDEA搭建JDK源码阅读环境

    利用IDEA搭建JDK源码阅读环境 首先新建一个java基础项目 基础目录 source 源码 test 测试源码和入口 准备JDK源码 下图框起来的路径就是jdk的储存位置 打开jdk目录,找到sr ...