JZ67ロープを切る

タイトル説明

これは長さnのロープです。ロープを整数長のmセグメントに切断してください(mおよびnは整数、n> 1およびm> 1、m <= n)。各セグメントの長さはkとして記録されます。 [1]、...、k [m]。k [1] x ... xk [m]の可能な最大積は何ですか?例えば、ロープの長さが8本の場合、2本、3本、3本の3本に切ります。このときの最大積は18本です。

説明を入力してください:

数値nを入力します。意味については、タイトルを参照してください。(2 <= n <= 60)

出力の説明:

答えを出力します。
例1

入る

8

出力

18

public class Solution {
        public int cutRope(int target) {
        if (target == 2) {
            return 1;
        }
        if (target == 3) {
            return 2;
        }
        int[] dp = new int[target+1];
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 3;
        for (int i = 1; i <= target; i++) {
            for (int j = 1; j <= i/2; j++) {
                dp[i] = Math.max(dp[i],dp[j]*dp[i-j] );
            }
        }
        return dp[target];
    }
}

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41620020/article/details/108705391