lanqiao OJ 239 最优包含

简介: lanqiao OJ 239 最优包含

1.最优包含 - 蓝桥云课 (lanqiao.cn)

这个题和活动 - AcWing编辑距离 差不多可以参考一下

只不过只能进行删除和修改操作 ;;  而我们的目标其实是修改操作 所以我们减去删除长度也就是本来字符串的长度差值就是我们要求的最终要修改的长度 ;

//编译代码不做过多解释,有疑问复习以下上面编译距离的题
#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 1010 , INF = 1e9 ;
char a[N] ,b[N] ;
int f[N][N] ;//表示前i个字母由前j个字母转化的最少操作数
int main(){
  scanf("%s" , a + 1 ) ;
  scanf("%s" , b + 1 ) ;
  int n = strlen(a + 1) ;
  int m = strlen(b + 1) ;
  for(int i = 0 ; i <= n ; i++){
    for(int j = 0 ; j <= m ; j ++){
      f[i][j] = 1000000 ;
    }
  }
  for(int i = 0 ; i <= n ; i ++ )f[i][0]  =  i ;
  for(int j = 0 ; j <= m ; j  ++) f[0][j] = j ;
  for(int i = 1 ; i <= n ; i ++ ){
    for(int j = 1 ; j <= m ; j ++ ){
      f[i][j] = f[i-1][j] + 1  ;//只能进行删除操作
      if(a[i] == b[j]) f[i][j] = min(f[i][j] , f[i-1][j-1] ) ;
      else f[i][j] = min(f[i][j] , f[i-1][j-1] + 1) ;
      
    }
  }
  cout << f[n][m] - n + m << endl ;
  return 0 ;
} 


目录
相关文章
|
2月前
lanqiao OJ 106 正则问题
lanqiao OJ 106 正则问题
29 0
|
2月前
lanqiao OJ 644 方格分割
lanqiao OJ 644 方格分割
20 1
|
2月前
lanqiao OJ 89 路径之谜
lanqiao OJ 89 路径之谜
26 1
|
2月前
lanqiao OJ 246 矩阵计数
lanqiao OJ 246 矩阵计数
13 0
|
2月前
lanqiao oj 185 修改数组
lanqiao oj 185 修改数组
18 0
|
2月前
lanqiao OJ k倍区间
lanqiao OJ k倍区间
13 0
|
2月前
lanqiao OJ 264 危险系数
lanqiao OJ 264 危险系数
16 0
|
6月前
|
移动开发 C++
【洛谷 P1157】组合的输出 题解(深度优先搜索+枚举子集)
该问题要求编程输出从1到n中选择r个元素的所有组合,组合按字典序排列。输入包含两自然数n和r(1&lt;n&lt;21, 0≤r≤n)。输出每个组合时,每个数字占据3个字符宽度。提供的AC代码使用C++,通过递归搜索方法枚举子集。样例输入为5 3,输出显示所有3个元素的组合。
54 0
|
6月前
【洛谷 P1036】[NOIP2002 普及组] 选数 题解(深度优先搜索+判断质数+枚举子集)
**NOIP2002普及组选数问题**:给定$n$个整数和一个整数$k$,需找出所有$k$个数的组合,计算它们的和为素数的种类数。输入包含$n$和$k$,以及$n$个整数;输出是符合条件的组合数。例如,对于输入`4 3`和数组`[3, 7, 12, 19]`,输出为`1`。代码使用递归枚举子集并检查质数的方法。
88 0
|
7月前
代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集
代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集
51 0