代码随想录训练营 DP
343. 整数拆分
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。
func integerBreak(n int) int {
dp:=make([]int, n+1)
dp[2] =1
for i:=3;i<n+1;i++{
for j:=1;j<= i/2;j++{
dp[i] = max(dp[i],max((i-j)*j,dp[i-j]*j))
}
}
return dp[n]
}
func max(x,y int) int{
if x>y{
return x
}
return y
}
96. 不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
func numTrees(n int) int {
dp:= make([]int,n+1)
dp[0] =1
dp[1] =1
for i:=2; i<= n;i++{
for j:=1;j<=i;j++{
dp[i]+=dp[j-1]*dp[i-j]
}
fmt.Println(dp[i])
}
return dp[n]
}