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]);
	}
}

posted @   南墙1  阅读(104)  评论(0编辑  收藏  举报
编辑推荐:
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
阅读排行:
· Apifox不支持离线,Apipost可以!
· 历时 8 年,我冲上开源榜前 8 了!
· 零经验选手,Compose 一天开发一款小游戏!
· Trae 开发工具与使用技巧
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示