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]);
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步