首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法训练 最大的算式

算法训练 最大的算式

作者头像
AI那点小事
发布2020-04-20 16:35:42
8700
发布2020-04-20 16:35:42
举报

问题描述   题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:   N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:   1*2*(3+4+5)=24   1*(2+3)*(4+5)=45   (1*2+3)*(4+5)=45   …… 输入格式   输入文件共有二行,第一行为两个有空格隔开的整数,表示N和K,其中(2<=N<=15, 0<=K<=N-1)。第二行为 N个用空格隔开的数字(每个数字在0到9之间)。 输出格式   输出文件仅一行包含一个整数,表示要求的最大的结果 样例输入 5 2 1 2 3 4 5 样例输出 120 样例说明   (1+2+3)*4*5=120


AC代码如下:

import java.util.Scanner;

public class Main {
    static int N;
    static int Mul;
    static long[] num = new long[20];
    static long[] sum = new long[20];
    static long[][] dp = new long[20][20];
    /*
     * dp[i][j]代表前i个数中有j个乘号的最大值
     * sum[i]是前i个数的和
     * 状态转移方程:dp[i][0] = sum[i]
     * dp[i][j] = max(dp[i][j],dp[k-1][j-1]*(sum[i]-sum[j-1]))
     * k为乘号的位置;
     */

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        N= in.nextInt();
        Mul = in.nextInt();
        for ( int i = 0 ; i < 20 ; i++){
            for ( int j = 0 ; j < 20 ; j++){
                dp[i][j] = 0;
            }
        }
        sum[0] = 0;
        num[0] = 0; 
        for ( int i = 1 ; i <= N ; i++){
            num[i] = in.nextLong();
            sum[i] = sum[i-1] + num[i];
            dp[i][0] = sum[i];
        }
        for ( int i = 2 ; i <= N ; i++){
            int t = Math.min(i, Mul);
            for ( int j = 1 ; j <= t ; j++){//j为乘号的个数
                for ( int k = 2 ; k <= i ; k++){//k为乘号的位置
                    long tmp = sum[i]-sum[k-1];
                    dp[i][j] = Math.max(dp[i][j], dp[k-1][j-1]*tmp);
                }
            }
        }
        System.out.print(dp[N][Mul]);
        in.close();
    }

}
这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档