这个问题是我家居仔参加蓝桥杯考试的时候碰到的,在网上搜索了答案 ,主要 有两种:动态规划以及在不同位置插入乘号,说实话动态规划我没怎么明白(还是实力不行啊)。两三个月后,在和娃复盘,突然会了一种新的方法,实验了几次,bingo!也没有见到类似的答案~现在题目以及三种解法都贴出来,欢迎指正。
题目:蓝桥杯2022年3月13日小学组python选拔赛第五题
给定正整数1<=m<=5,和一个只包含数字的字符串,长度大于5小于等于20,将m个乘号插入到字符串中且不相邻,求插入后生成的乘法算式最大的方法,不能放在首尾,不含0。
动态规划法:
n,k = map(int,input().split())
s = list(input()) #此时的列表数据都是str类型
dp = [[0 for i in range(k+1)]for j in range(n+1)] #动规的数组
dp[1][0] = int(s[0])
for i in range(2, n+1):
dp[i][0] = int(s[i-1])+int(dp[i-1][0])*10
#往动规数组放的时候要转化成int类型,输入数组的第一列

本文介绍了蓝桥杯竞赛中的一道题目,要求在给定的数字字符串中插入乘号以获得最大乘积。文中提供了动态规划、插入不同位置以及切片法三种解法,并分享了作者对于每种方法的理解和实现,适用于初学者和参赛者参考。
最低0.47元/天 解锁文章
1707





