• Java实现 蓝桥杯 乘积最大


    在这里插入图片描述
    输入输出样例
    输入样例#1:
    4 2
    1231
    输出样例#1:
    62

    import java.util.Scanner;
    
    public class chengjizuida {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();
    		int k = sc.nextInt();
    		String s = sc.next();
    		s = s.trim();
    		sc.close();
    		// String ss = "0123456789";
    		// String sss=ss.substring(0,1);
    		// System.out.println(sss);
    		// System.out.println(Integer.parseInt("123456"));
    		int[][] num = new int[s.length() + 2][s.length() + 2];
    		for (int i = 1; i < s.length() + 1; i++) {
    			for (int j = i + 1; j < s.length() + 2; j++) {
    				String str = s.substring(i - 1, j - 1);
    				// str = str.trim();
    				// System.out.println(str);
    				
    				int a=0;
    				try {
    					 a = Integer.valueOf(str);
    				} catch (Exception e) {
    					// TODO: handle exception
    					 a = 0;
    				}
    			
    				num[i][j-1] = a;
    	//			System.out.println(a);
    				// System.out.println(num[i][j]);
    				// System.out.println(str);
    			}
    		}
    		int[][] dp = new int[n + 1][k + 1];
    		for (int i = 0; i < n+1; i++) {
    			for (int j = 0; j < k+1; j++) {
    				dp[i][j]=1;
    			}
    			dp[i][0]=num[i][1];
    		}
    		for (int j = 1; j <= k; j++)
    			// 乘号个数
    			for (int i = 1+j; i <= n; i++)
    				// 前i个数
    				for (int l = j; l <= i; l++)
    					// 最后一个乘号放在第k个数后第k+1个数前
    					dp[i][j] = Math.max(dp[i][j], dp[l][j-1] * num[l + 1][i]);
    	            	System.out.println(dp[n][k]);
    	}
    }
    
    
  • 相关阅读:
    C语言实现链表
    获取两个数之间的随机数-java
    C#继承机制 多级继承
    C#继承机制 访问与隐藏基类成员
    C#继承机制 C#中的继承符合下列规则
    C#装箱与拆箱的研究
    C#箴言之用属性来访问类的私有成员
    C# 创建和初始化集合对象
    C# 常用函数和方法集汇总
    C# 多态与new关键字
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948267.html
Copyright © 2020-2023  润新知