• 算法训练 最大的算式


    算法训练 最大的算式  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描述
      题目很简单,给出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
    ------------------------------------------------

    思路:

    dp[i][j]表示前i个数有j个乘号的最大值。

    dp[i][j]=max(dp[i][j],dp[k-1][j-1]*sum(k,i)); k为前i个数中任意一个位置。

    ---------------------------------------------------------------
    import java.util.Scanner;
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int a[]=new int[120];
            long sum[]=new long[120];     //sum[i]表示前i个数之和
            long f[][]=new long[120][120]; //dp[i][j]表示前i个数中有j个乘号时,所得最大值
            int n,K;
            sum[0]=0; 
            Scanner sc=new  Scanner(System.in);
            n=sc.nextInt();
            K=sc.nextInt();
            for(int i=1;i<=n;i++){
                a[i]=sc.nextInt();
                sum[i]=sum[i-1]+a[i];
            }
            for(int i=1;i<=n;i++)
                f[i][0]=sum[i];
            for(int i=0;i<=n;i++){
                 int t = Math.min(i - 1, K);
                for(int j=1;j<=t;j++){ //控制乘的数量
                    for(int k=2;k<=i;k++){
                        long s=sum[i]-sum[k-1]; //后面 i-(k-1)数的和,k要<=i
                        f[i][j]=Math.max(f[k-1][j-1]*s, f[i][j]);//j表示乘积数,f[k-1][j-1] 要再乘上一个才是j个乘号,k个数
                    }
                }
            }
            System.out.println(f[n][K]);
    
        }
    
    }
     
  • 相关阅读:
    go 本地安装 grpc-go
    vscode python code-runner 中文乱码解决
    spring-cloud-sleuth 学习资源
    vscode 快键键资源整理
    vscode and python
    redis分布式锁
    TF-IDF算法解释
    spring 4.1 xml配置头部信息 maven配置信息
    google像apple 30亿美元购买流量
    spring 启动异常Failed to read candidate component class
  • 原文地址:https://www.cnblogs.com/watchfree/p/5322654.html
Copyright © 2020-2023  润新知