动态规划 立扣题

剪绳子

立扣343. 整数拆分

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。

func cuttingRope(n int) int { // n 米长的绳子
	dp := make([]int, n+1) //范围从1到n
	dp[1] = 1
	dp[2] = 1
	for i := 3; i < n+1; i++ {
		curMax := 1
		for j := 1; j <= i; j++ {
			// 要么直接分成 i 和 i-j 两段,要么将剩下的一段继续分割
			curMax = Max(curMax, Max(j*dp[i-j], j*(i-j)))
		}
		dp[i] = curMax
	}
	return dp[n]
}

func Max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

立扣72题,编辑距离

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符
删除一个字符
替换一个字符

例一

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')
posted @ 2021-07-30 05:40  沧海一声笑rush  阅读(66)  评论(0编辑  收藏  举报