読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

aoj DPL_1_E

algorithm algorithm-動的計画法 contest contest-aoj language language-c++

Edit Distance (Levenshtein Distance) | Aizu Online Judge
レーベンシュタイン距離を求めるアルゴリズム.
下が詳しい
レーベンシュタイン距離 - Wikipedia
dpでいける.

int solve(string s, string t)
{
  int sn = s.size();
  int tn = t.size();
  vector<vector<int>> dp(sn+1,vector<int>(tn+1,0));
  REP(i,sn+1) dp[i][0] = i;
  REP(i,tn+1) dp[0][i] = i;
  FOR(i,1,sn) FOR(j,1,tn)
    dp[i][j] = min({dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+(s[i-1]!=t[j-1])});
  return dp[sn][tn];
}

int main()
{
  string s, t; cin >> s >> t;
  cout << solve(s,t) << endl;
  return 0;
}