如何打造一个吸引人的,用于推广做网站项目团队口号深网网站?

摘要:做网站项目团队口号,深网网站,html网站素材,南阳网站建设口碑题目描述 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数。 你可以对一个单词进行如下三种操
做网站项目团队口号,深网网站,html网站素材,南阳网站建设口碑题目描述 给定两个单词 word1 和 word2#xff0c;计算出将 word1 转换成 word2 所使用的最少操作数。 你可以对一个单词进行如下三种操作#xff1a; 插入一个字符删除一个字符替换一个字符 原题#xff1a;LeetCode 72 思路及实现 方式一#xff1a;动态规划 思路…题目描述 给定两个单词 word1 和 word2计算出将 word1 转换成 word2 所使用的最少操作数。 你可以对一个单词进行如下三种操作 插入一个字符删除一个字符替换一个字符 原题LeetCode 72 思路及实现 方式一动态规划 思路 使用二维数组 dp 来保存子问题的解其中 dp[i][j] 表示 word1 的前 i 个字符转换成 word2 的前 j 个字符所需要的最少操作数。 当 word1[i-1] word2[j-1] 时不需要进行操作dp[i][j] dp[i-1][j-1]。当 word1[i-1] ! word2[j-1] 时可以选择插入、删除或替换操作取这三种操作的最小值加1即 dp[i][j] min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) 1。 代码实现 Java版本 public int minDistance(String word1, String word2) {int m word1.length();int n word2.length();// 创建一个二维数组dpint[][] dp new int[m 1][n 1];// 初始化第一行和第一列for (int i 0; i m; i) {dp[i][0] i;}for (int j 0; j n; j) {dp[0][j] j;}// 填充dp数组for (int i 1; i m; i) {for (int j 1; j n; j) {if (word1.charAt(i - 1) word2.charAt(j - 1)) {dp[i][j] dp[i - 1][j - 1];} else {dp[i][j] 1 Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1]));}}}return dp[m][n]; }说明Java版本使用了二维数组dp来保存中间结果并通过循环填充该数组。 C语言版本 #include stdio.h #include string.h #include limits.hint minDistance(char *word1, char *word2) {int m strlen(word1);int n strlen(word2);// 创建一个二维数组dpint dp[m 1][n 1];// 初始化第一行和第一列for (int i 0; i m; i) {dp[i][0] i;}for (int j 0; j n; j) {dp[0][j] j;}// 填充dp数组for (int i 1; i m; i) {for (int j 1; j n; j) {if (word1[i - 1] word2[j - 1]) {dp[i][j] dp[i - 1][j - 1];} else {dp[i][j] 1 fmin(fmin(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]);}}}return dp[m][n]; }说明C语言版本与Java版本类似但使用了fmin函数来取最小值。
阅读全文