14- I、 剪繩子(cuttingRope)
阿新 • • 發佈:2021-01-06
技術標籤:Algorithm_swordOffer
14- I、 剪繩子(cuttingRope)
1. python
class Solution:
def cuttingRope(self, n: int) -> int:
if not n:
return 0
dp=[0]*(n+1)
dp[2]=1
for i in range(3,n+1):
for j in range(i):
dp[i] = max(dp[i],j*(i- j),j*dp[i-j])
return dp[n]
2. Java
class Solution {
public int cuttingRope(int n) {
int[] dp=new int [n+1];
dp[2]=1;
for(int i =3;i<=n;i++){
for(int j=0;j<i;j++){
dp[i] = Math.max(dp[i],j*Math.max(dp[i-j],i-j));
}
}
return dp[n];
}
}
3. C++
class Solution { public: int cuttingRope(int n) { vector<int> dp(n+1); dp[2]=1; for(int i =3;i<=n;i++){ for(int j=0;j<i;j++){ dp[i]=max(dp[i],j*max(i-j,dp[i-j])); } } return dp[n]; } };