题解分享
题解分享简介
编辑距离 - 题解
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String x=sc.next();
String y=sc.next();
int[][] dp=new int[x.length()+1][y.length()+1];
//初始化
for (int i = 0; i <= x.length(); i++) {
dp[i][0]=i;
}
for (int j = 0; j <= y.length(); j++) {
dp[0][j]=j;
}
for (int i = 0; i < x.length(); i++) {
for (int j = 0; j < y.length(); j++) {
if (x.charAt(i)!=y.charAt(j)){
dp[i+1][j+1]=Math.min( dp[i][j]+1 , Math.min( dp[i][j+1]+1,dp[i+1][j]+1 ) );
}else{
dp[i+1][j+1]=dp[i][j];
}
}
}
System.out.println(dp[x.length()][y.length()]);
}
}
```
查看全文
0
0
1
2
编辑距离 - 题解
```
#include<iostream>
#include<string.h>
using namespace std;
string a;
string b;
int dp[2002][2002];
int main()
{
getline(cin,a);
getline(cin,b);
int s1=a.length();
int s2=b.length();
for(int i=0;i<=s1;i++)
{
dp[i][0]=i;
}
for(int i=0;i<=s2;i++)
{
dp[0][i]=i;
}
for(int i=1;i<=s1;i++)
{
for(int j=1;j<=s2;j++)
{
if(a[i-1]!=b[j-1])
dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1;
else
dp[i][j]=min(min(dp[i][j-1],dp[i-1][j-1]),dp[i-1][j-1]-1)+1;
}
}
cout<<dp[s1][s2];
}
```
查看全文
0
0
1
1
编辑距离 - 题解
```
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2001 ;
int dp[N][N];
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
string s1,s2;cin>>s1>>s2;
int n = s1.size();
int m = s2.size();
for(int i=0;i<=s1.size();i++) dp[i][0] = i;
for(int j=0;j<=s2.size();j++) dp[0][j] = j;
for(int i=1;i<=s1.size();i++){
for(int j=1;j<=s2.size();j++){
if(s1[i-1] == s2[j-1])
dp[i][j] = dp[i-1][j-1];
else
dp[i][j] = min({dp[i-1][j-1],dp[i-1][j],dp[i][j-1]})+1;
}
}
cout<<dp[n][m];
return 0;
}
```
查看全文
0
0
0
0



