【noi 2.6_2988】计算字符串距离(DP)
2024-10-10 09:15:27
题意: 给两个字符串,可以增、删、改,问使这两个串变为相同的最小操作数。
解法:(下面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
最新文章
- LR录制Flex+Web,登录功能之登录密码出错的处理
- ArrayList源码分析
- ACM——3n+1
- 用API创建用户
- ASP.NET Zero--基础设施
- 自古枪兵幸运E
- Java 中 AOP —— 探讨其存在价值及实现方式对比
- Java io 入门
- 业务侧有大量timeout请求超时日志
- bzoj 1093 最大半连通子图 - Tarjan - 拓扑排序 - 动态规划
- thinkphp在前端页面的js代码中可以使用 U方法吗? 可以使用模板变量如__URL__等吗?
- postman系列之批量执行接口测试用例
- HDU6113
- linux C守护进程编写
- navicat-mysql-linux工具
- 字符串匹配--AC自动机模板
- ubuntu16安装及嵌入式开发环境搭建
- graphviz 的绘图布局
- 单源最短路:Dijkstra算法 及 关于负权的讨论
- LeetCode OJ:Implement Trie (Prefix Tree)(实现一个字典树(前缀树))
热门文章
- Java基础学习总结笔记
- 【ORACLE错误】SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
- URL重定向 - Pikachu
- ctfhub技能树—文件上传—文件头检查
- service自动发现,yaml文件管理内外部端口访问
- XV6学习(1) Lab util
- spring data JPA 使用EntityentiListeners实现数据审计功能设计
- 我为什么不鼓吹 WireGuard
- Crypto.getRandomValues()
- Socket的用法——NIO包下SocketChannel的用法 ———————————————— 版权声明:本文为CSDN博主「茶_小哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ycgslh/article/details/79604074