- 编译距离,动态规划,四种情况同时取最小就行
#include<bits/stdc++.h> using namespace std; int main(){ string s,t; while(cin>>s>>t){ vector<vector<int>> dp(s.size()+1, vector<int>(t.size()+1,0)); for(int i=0; i<= s.size();i++){ dp[i][0] = i; } for(int i=0; i<= t.size();i++){ dp[0][i] = i; } for(int i = 1; i<= s.size();i++){ for(int j = 1; j<= t.size(); j++){ dp[i][j] = min(dp[i-1][j]+1, min(dp[i][j-1]+1,dp[i-1][j-1]+ (s[i-1]!=t[j-1]))); } } cout<<dp[s.size()][t.size()]<<endl; } return 0; }