• 18-算法训练 最大的算式


                      算法训练 最大的算式  
    时间限制: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] = Math.max(dp[i][j], dp[tt][j-1] * (sum[i] - sum[tt]));
      sum[i] 表示前 i 项的累加和;
      dp[i][j] 表示前 i 个数时使用 j 个乘号
      dp[tt][j-1] * (sum[i] - sum[tt]) 表示在tt位置插入最后一个乘号,即为前 tt 个数包含 j - 1 个乘号的值 乘以 tt 到 i 的累加和
     
    import java.util.Scanner;
    
    public class Main1 {
    
    	public static void main(String[] args) {
    		Scanner cin = new Scanner(System.in);
    		int n, k;
    		n = cin.nextInt();
    		k = cin.nextInt();
    		long[][] dp = new long[n+1][n+1];
    		long[] sum = new long[n+1];
    		long t;
    		//初始化dp数组
    		for(int i = 0; i <= n; i++) {
    			for(int j = 0; j <= k; j++) {
    				dp[i][j] = 0;
    			}
    		}
    		//得到累加和
    		sum[0] = 0;
    		for(int i = 1; i <= n; i++) {
    			t = cin.nextLong();
    			sum[i] = sum[i-1] + t;
    			dp[i][0] = sum[i];
    		}
    		//计算:
    		for(int i = 2; i <= n; i++) {     //数的个数
    			for(int j = 1; j <= k; j++) { //乘号的个数
    				for(int tt = 1; tt < i; tt++) { //遍历最后一个乘号的位置
    					dp[i][j] = Math.max(dp[i][j], dp[tt][j-1] * (sum[i] - sum[tt])); 
    				}
    			}
    		}
    		System.out.println(dp[n][k]);
    		cin.close();
    	}
    }
    

      

     
     
     
  • 相关阅读:
    js-jQuery对象与dom对象相互转换
    django模板{%for%}中的forloop的应用
    ubuntu MySQL数据库输入中文乱码 解决方案
    多线程下的神奇的IOCP
    类库服务寄宿到WebHost
    细说Asp.Net WebAPI消息处理管道
    项目发布Debug和Release版的区别
    linux yum命令详解
    Linux系统如何查看版本信息
    Linux查看物理CPU个数、核数、逻辑CPU个数
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10409432.html
Copyright © 2020-2023  润新知