問題43-整数を分解して積を最大化する

オリジナルタイトルリンク

タイトル説明

给出一个整数n,将n分解为至少两个整数之和,使得这些整数的乘积最大化,输出能够获得的最大的乘积。
例如:
2=1+1,输出1;
10=3+3+4,输出36。

输入:
10
输出:
36

参照コード

import java.util.Scanner;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int sum = 1;
        // 多分解几个数就会发现,全分解为2或者3时,乘积最大
        if (n <= 0) {
    
    
            System.out.print(0);
        } else if (n > 0 && n <= 2) {
    
    
            System.out.print(1);
        } else if (n == 3) {
    
    
            System.out.print(3);
        } else if (n == 4) {
    
    
            System.out.print(4);
        } else {
    
    
            while (n > 4) {
    
    
                sum *= 3;
                n = n - 3;
            }
            // 这时n的值可能为2,3,4
            if (n >= 2)
                sum *= n;
            System.out.print(sum);
        }
    }
}

総括する

この種の动态规划質問への回答を使用して、変化し続けることができます。前提は、ある程度の動的計画法を持っていることです熟悉度同時に、それを分析其规律解決することもでき、特定の問題を解決します效率更高

おすすめ

転載: blog.csdn.net/Awt_FuDongLai/article/details/111301691