解题思路:

递归搜索。

假设字符串长度为n,下标从0开始。则我们可以在第0~n-2位数后面放”ד号。

接下来遍历所有符合条件的位置,每个位置有两种情况,放和不放。

求出所有符合条件的结果,即可求出答案。

具体求解过程可参考下面代码,有详细注释。

注意事项:

参考代码:

def dfs(T,now):      #T中记录乘号的位置,now为遍历到s中的第几个数  
    global n,m,s,ans  
  
    if len(T) == m:  #如果T中已经标记了m个乘号位置  
        num = 1      #存放乘积  
        t = 0  
        for item in T:   #求乘积  
            num = num * int(s[t:item+1])  
            t = item+1  
        num = num * int(s[t:])  #不要忘记最后一个要乘的数  
        if num > ans:  
            ans = num  
        return  
  
    if now >= n-1:  
        return  
  
    dfs(T+[now],now+1)   #在第now位数后面放乘号  
    dfs(T,now+1)         #不在第now位数后面放乘号  
  
  
if __name__ == '__main__':  
    n,m = map(int,input().strip().split())  
    s = input().strip()  
    ans = 0    #存放最终答案  
    dfs([],0)    
    print(ans)


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论