解题思路:
该题目可以使用穷举法,因为只有3个数字,但是如果多个数字则需要我们使用动态规划
动态规划解法
在n个数中,我们可以通过改变一个参数r *来对数字进行分组,比如说总共有4个数,1,2,3,4
*
当r=2时
,可以为 12 23 34 总共有三组这时候我们可以计算每一组内的最大值
当r=3时,可以为 123 234 总共两组 那比如说第一组 123 我们就可以利用前面r=2计算好的最大值来计
算当前最大值 而这时候就需要一个断点k,
当k在 1 [2,3] 之间 那答案就等于Math.max(1*[2,3],1+[2,3])
当k在 [1,2] 3 之间,那答案就等于Math.max([1,2]*3,[1,2]+3)
所以我们就需要循环来改变k值也就是在该组内的断点来获取最大值,然后取不同k值获取的最大值的最
大值

当r=4时,分组只有一个 [1,2,3,4] 那断点k就可以有3个位置,而我们需要计算的就是断开后的两组之间的相加或相乘的最大值,而断开的两组各自的最大值我们在前面r = 2,3已经计算过了,所以最后可以得到答案

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = 3;
        int[][] dp = new int[n][n];
        for(int i = 0;i<n;i++){
            dp[i][i] = sc.nextInt();
        }
        for(int r = 2;r<=n;r++){
            for(int i = 0;i<n-r+1;i++){
                int j = i+r-1;
                for(int k = i;k<j;k++){
                    dp[i][j] = Math.max(dp[i][j],Math.max(dp[i][k]*dp[k+1][j],dp[i][k]+dp[k+1][j]));
                }
            }
        }
        System.out.println(dp[0][n-1]);

    }