- class Solution:
- def integerBreak(self, n: int) -> int:
- dp = [0] *(n+1)
- dp[2]=1
- if n <3:
- return dp[n]
- for i in range(3,n+1):
- for j in range(1,n):
- dp[i]=max(j*(i-j),j*dp[i-j],dp[i])
- return dp[n]
- class Solution:
- def numTrees(self, n: int) -> int:
- dp = [0]*(n+1)
- dp[0]=1
- dp[1]=1
- for i in range(2,n+1):
- for j in range(1,i+1):
- dp[i]+=dp[j-1]*dp[i-j]
- return dp[n]