计算字符串距离(信息学奥赛一本通-T1298)
【题目描述】
对于两个不同的字符串,我们有一套操作方法来把他们变得相同,具体方法为:
修改一个字符(如把“a”替换为“b”);
删除一个字符(如把“traveling”变为“travelng”)。
比如对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。无论增加还是减少“g”,我们都仅仅需要一次操作。我们把这个操作所需要的次数定义为两个字符串的距离。
给定任意两个字符串,写出一个算法来计算出他们的距离。
【输入】
第一行有一个整数n。表示测试数据的组数。
接下来共n行,每行两个字符串,用空格隔开,表示要计算距离的两个字符串。
字符串长度不超过1000。
【输出】
针对每一组测试数据输出一个整数,值为两个字符串的距离。
【输入样例】
3
abcdefg abcdef
ab ab
mnklj jlknm【输出样例】
1
0
4
【源程序】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 1001
#define MOD 2520
#define E 1e-12
using namespace std;
char a[N],b[N];
int f[N][N];
int main()
{int n;cin>>n;while(n--){scanf("%s%s",a+1,b+1);int len_a=strlen(a+1);int len_b=strlen(b+1);for(int i=0;i<=len_a;i++)f[i][0]=i;for(int j=0;j<=len_b;j++)f[0][j]=j;for(int i=1;i<=len_a;i++)for(int j=1;j<=len_b;j++){if(a[i]==b[j])f[i][j]=f[i-1][j-1];elsef[i][j]=min(min(f[i-1][j-1],f[i-1][j]),f[i][j-1])+1;}cout<<f[len_a][len_b]<<endl;}return 0;
}
计算字符串距离(信息学奥赛一本通-T1298)相关推荐
- 输出亲朋字符串(信息学奥赛一本通-T1133)
[题目描述] 编写程序,求给定字符串s的亲朋字符串s1. 亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符: 给定字符串s的第二个字符的AS ...
- 计算书费(信息学奥赛一本通-T1104)
[题目描述] 下面是一个图书的单价表: 计算概论 28.9元/本 数据结构与算法 32.7元/本 数字逻辑 45.6元/本 C++程序设计教程 78元/本 人工智能 35 元/本 计算机体系结构 86 ...
- 计算邮资(信息学奥赛一本通-T1052)
[题目描述] 根据邮件的重量和用户是否选择加急计算邮费.计算规则:重量在1000克以内(包括1000克), 基本费8元.超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算: ...
- 计算鞍点(信息学奥赛一本通-T1122)
[题目描述] 给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点.鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值. 例如:在下面的例子中(第4行第1 ...
- 《信息学奥赛一本通 提高篇》 第四部分 数据结构 第4章 倍增求LCA
例题1 点的距离 信息学奥赛一本通(C++版)在线评测系统 例题2 暗的连锁(Poj3417) 信息学奥赛一本通(C++版)在线评测系统 LOj10131 暗的连锁_juruo_xlh-CSDN博客 ...
- 信息学奥赛一本通 1356:计算(calc)
[题目链接] ybt 1356:计算(calc) [题目考点] 1. 表达式求值 中缀表达式求值 2. 表达式树 表达式树:一棵表达式树可以表示一系列的运算. 表达式树中的结点包括运算符与数值 str ...
- 信息学奥赛一本通——1012:计算多项式的值
大家好 今天给大家带来<信息学奥赛一本通--1012:计算多项式的值> 看题目: 1012:计算多项式的值 时间限制: 1000 ms 内存限制: 65536 KB 提交数 ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
最新文章
- linux怎么装谷歌浏览器,如何在linux CentOS 上安装chrome 谷歌浏览器?
- Leetcode周赛5827. 检查操作是否合法
- django orm级联_Django数据表关联关系映射(一对一、一对多、多对多)
- 看完这些福利才知道,为什么说双12一定要出去浪
- vue工程打包上线样式错乱问题 - bug解决(4种)
- Java基础---认识IO流---字节流、字符流---缓冲流---转换流
- ajax_典型应用_添加商品标题
- How to Make Terrains in Tiled Map Editor
- Android教程 第四章 用户界面设计基础
- 集合框架-ArrayList,Vector,Linkedlist
- 湖北省首条短途运输航线“荆门—武汉”航线运营
- 高德地图使用——定位功能
- ubuntu系统安装qq教程(超简单,亲测成功)
- 回答cad转pdf格式的简易方法
- MDIO总线介绍 |CSDN创作打卡
- 互联网创新创业大赛优秀范例_创新创业大赛优秀作品-互联网+大赛作品
- 无源微波器件--耦合线定向耦合器
- MySQL主从之GTID主从
- MySQL性能问题以及查找和处理
- Centos 8查询和设置当前时区