题 4:字符串的修改(str.pas/in/out)
【问题描述】
有 A=a1a2a3?am,B=b1b2b3?bn 两个字符串(均为小写字母)现在要通过以下操作将 A
或 A 的一个后缀修改为 B:
1. 删除 删除掉 A 中的某一个字符。
2. 添加 将某一个字符添加到 A 中任意位置。
3. 替换 将 A 中某一字符替换为另一个。
求出最小操作次数。
【输入格式】
第一行为字符串 A。 第二行为字符串 B(长度均不超过 1000)。
【输出格式】
一个正整数,最小操作次数。
【样例输入】
aaab
aabc
【样例输出】
1
【提示】
1 次操作 使用后缀 aab 在末尾插入 c。
原先思路:暴力枚举1~3的几种情况,结果木有得一分,白忙活了。。。。。。
代码要用到DP(动态规划)的思路,由于时间关系,发个老师的代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000+10;
int a[maxn];
string s[maxn];
int main(){
int i,j,k,m,n;
string s1,s2;
cin>>s1>>s2;
if(s1==s2){cout<<0<<endl;return 0;}
int l=1;
for(i=1;i<s1.length();i++){
s[i]=s1.substr(l);
l++;
}
for(i=1;i<s1.length();i++){
if(s[i]==s2){cout<<0<<endl;return 0;}
}
return 0;
}