给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2所使用的最少操作数 。
int minDistance(char * word1, char * word2){
//动态规划
int dp[501][501];
int i,j;
int size1=strlen(word1);
int size2=strlen(word2);
//dp[i][j]表示word1的前i个字符变化到word2的前j个字符的最少操作次数
//状态方程
//插入一个字符 dp[i][j]=dp[i][j-1];
//删除一个字符 dp[i][j]=dp[i-1][j];
//替换一个字符 dp[i][j]=ap[i-1][j-1];
//初始化dp
dp[0][0]=0;
//word1全空
for(i=0;i<=size2;i++){
dp[0][i]=i;
}
//word2全空
for(i=0;i<=size1;i++){
dp[i][0]=i;
}
for(i=1;i<=size1;i++){
for(j=1;j<=size2;j++){
dp[i][j]=fmin(dp[i-1][j],fmin(dp[i][j-1],dp[i-1][j-1]))+1;
if(word1[i-1]==word2[j-1]){
dp[i][j]=fmin(dp[i][j],dp[i-1][j-1]);
}
}
}
return dp[size1][size2];
}