14- I.カッティングロープ(cuttingRope)

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];
    }
};

おすすめ

転載: blog.csdn.net/weixin_44294385/article/details/112226772