题意: 给两个字符串,可以增、删、改,问使这两个串变为相同的最小操作数。

解法:(下面2种的代码主要区别在初始化和,而状态转移方程大家可挑自己更容易理解的方法打)

1.f[i][j]表示a串前i个和b串前j个完成匹配的最小操作数。

2.f[i][j]表示a串前i-1个和b串前j-1个完成匹配的最小操作数。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6 #define N 1010
7
8 char a[1010],b[1010];
9 int f[1010][1010];
10
11 int mmin(int x,int y)
12 { return x<y?x:y; }
13 int main()
14 {
15 //freopen("a.in","r",stdin);
16 int T;
17 scanf("%d",&T);
18 f[0][0]=0;
19 for (int i=1;i<=N;i++)
20 f[i][0]=i, f[0][i]=i;
21 while (T--)
22 {
23 scanf("%s%s",a+1,b+1);
24 int la=strlen(a+1),lb=strlen(b+1);
25 for (int i=1;i<=la;i++)
26 for (int j=1;j<=lb;j++)
27 {
28 f[i][j]=mmin(f[i][j-1]+1,f[i-1][j]+1);//add del
29 if (a[i]==b[j]) f[i][j]=mmin(f[i][j],f[i-1][j-1]);
30 else f[i][j]=mmin(f[i][j],f[i-1][j-1]+1);//change
31 }
32 printf("%d\n",f[la][lb]);
33 }
34 return 0;
35 }

1

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6
7 const int L=1010;
8 char s[L],ss[L];
9 int f[L][L];
10 void upd(int &x,int y) {x=x<y?x:y;}
11
12 int main()
13 {
14 int n;
15 scanf("%d",&n);
16 while (n--)
17 {
18 scanf("%s%s",s+1,ss+1);
19 int l=strlen(s+1),ll=strlen(ss+1);
20 memset(f,63,sizeof(f));
21 f[1][1]=0;
22 for (int i=1;i<=l+1;i++)
23 for (int j=1;j<=ll+1;j++)
24 {
25 if (f[i][j]>100010) continue;
26 upd(f[i+1][j],f[i][j]+1),upd(f[i][j+1],f[i][j]+1);
27 if (s[i]==ss[j]) upd(f[i+1][j+1],f[i][j]);
28 else upd(f[i+1][j+1],f[i][j]+1);
29 int x=1;
30 }
31 printf("%d\n",f[l+1][ll+1]);
32 }
33 return 0;
34 }

2

【noi 2.6_2988】计算字符串距离(DP)的更多相关文章

  1. Stanford NLP 课程笔记之计算字符串距离

    在自然语言处理任务中,有时候需要计算两个字符串之间的相似度,也可以称作是两者之间的距离,用最小编辑距离表示. 最小编辑距离用{Insertion,Deletion,Substitution}这三种操作 ...

  2. openjudge-NOI 2.6-2988 计算字符串距离

    题目链接:http://noi.openjudge.cn/ch0206/2988/ 题解: 首先,题目有误,少了一个添加操作 和求解LCS之类的思路类似 f[i][j]表示a序列中1..i的部分和b序 ...

  3. php实现 计算字符串的距离

    php实现 计算字符串的距离 一.总结 一句话总结:解决dp问题最好的方法是什么:分析出状态后 实例+画表. 1.解决dp问题最好的方法是什么? 分析出状态后 实例+画表 2.画图的好处? 画出来表之 ...

  4. 字符串距离 简单DP

    字符串距离 时间限制: 1 Sec  内存限制: 128 MB 题目描述 设有字符串 X,我们称在 X 的头尾及中间插入任意多个空格后构成的新字符串为 X 的扩展串,如字符串 X 为"abc ...

  5. Spark Java API 计算 Levenshtein 距离

    Spark Java API 计算 Levenshtein 距离 在上一篇文章中,完成了Spark开发环境的搭建,最终的目标是对用户昵称信息做聚类分析,找出违规的昵称.聚类分析需要一个距离,用来衡量两 ...

  6. Levenshtein字符串距离算法介绍

    Levenshtein字符串距离算法介绍 文/开发部 Dimmacro KMP完全匹配算法和 Levenshtein相似度匹配算法是模糊查找匹配字符串中最经典的算法,配合近期技术栏目关于算法的探讨,上 ...

  7. PHP中计算字符串相似度的函数代码

    similar_text — 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ...

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

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

  9. php计算字符串长度

    /** * 计算字符串的长度(非字节) * 先用正则将字符串分解为个体单元,然后再计算单元的个数即得出字符串的长度 * from wordpress * @param string $string * ...

随机推荐

  1. ctfhub技能树—信息泄露—备份文件下载—.DS_Store

    打开靶机 查看页面信息 使用dirsearch进行扫描 访问该网页,下载文件 使用Linux系统打开文件 发现一个特殊文件,使用浏览器打开 拿到flag 二.使用Python-dsstore工具查看该 ...

  2. python--or 和 and 表达式

    or表达式: 两边为一真一假,返回真: 两边都为假,返回右边: 两边都为真,返回左边: and表达式: 两边为一真一假,返回假: 两边都为假,返回左边: 两边都为真,返回右边:

  3. Cookie&Session&Jsp总结

    知识点梳理 Cookie&Session&Jsp 1 会话技术 1.1 会话管理概述 1.1.1 会话技术介绍 会话:浏览器和服务器之间的多次请求和响应 (一次对话) 为了实现一些功能 ...

  4. 理解js闭包9大使用场景

    1.返回值(最常用) //1.返回值 最常用的 function fn(){ var name="hello"; return function(){ return name; } ...

  5. Django-发上云服务器遇到的问题

    1.服务器启动后外网访问显示A server error occurred. Please contact the administrator. 解决方法:原文:https://www.cnblogs ...

  6. 转 11 jmeter之图形监控扩展

    11 jmeter之图形监控扩展   Jmeter默认监听器的缺陷 Jmeter默认的监听器在表格.文字方面比较健全,但是在图形监控方面比较逊色,尤其在监控Windows或Linux的系统资源方面.但 ...

  7. 浅析鸿蒙中的 Gn 与 Ninja(一)

    目录: Ninja简介 make 的 3 个特性 举例说明Ninja 的用法 如何向构建工具 Ninja 描述构建图 后记 鸿蒙系统的编译构建是基于 Gn 和 Ninja 完成的,那么 Gn 和 Ni ...

  8. XShell的手动直连,避免配置ssh免密的一些问题

  9. status 404 reading EduClient#getCourseInfoOrder(String)解决过程

    UcenterClient#getUserInfoOrder(String) failed and no fallback available.解决过程 报错内容: com.netflix.hystr ...

  10. 服务发现 ap cp 强一致性 最终一致性 dns vip ip

    为什么基于域名 08 | 服务发现:到底是要CP还是AP? https://time.geekbang.org/column/article/208171 为什么需要服务发现?先举个例子,假如你要给一 ...