MAGCARI

Edit Distance

Jan 7th, 2023
1,074
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.64 KB | None | 0 0
  1. /*
  2.     Task    : Edit distance
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 08 January 2023 [08:57]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. char a[110],b[110];
  10. int dp[110][110];
  11. int main(){
  12.     int c1,c2,c3;   // c1 = insert, c2 = delete, c3 = replace
  13.     scanf(" %s %s %d %d %d",a+1,b+1,&c1,&c2,&c3);
  14.     int n = strlen(a+1),m = strlen(b+1);
  15.     // base case
  16.     for(int i=1;i<=n;i++)   dp[i][0] = i;
  17.     for(int i=1;i<=m;i++)   dp[0][i] = i;
  18.     // dp
  19.     for(int i=1;i<=n;i++){
  20.         for(int j=1;j<=m;j++){
  21.             if(a[i] == b[j])
  22.                 dp[i][j] = dp[i-1][j-1];
  23.             else
  24.                 dp[i][j] = min({dp[i-1][j]+c2,dp[i][j-1]+c1,dp[i-1][j-1]+c3});
  25.         }
  26.     }
  27.     printf("%d\n",dp[n][m]);
  28.     return 0;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment