14- I.カッティングロープ(cuttingRope)
1. パイソン
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];
}
};