Advertisement

动态规划用于处理大数字相乘问题

阅读量:

题目要求解析

今年被国际数学联盟正式确立为“2000——世界数学年”,同时又正值我国著名数学家华罗庚先生诞辰90周年纪念日。在华罗庚先生的故乡江苏金坛,举办了一场形式新颖、内容丰富的数学智力竞赛活动,你的一位亲密朋友XZ也荣幸地参与其中。在竞赛过程中,主持人向所有参赛者提出了一道题目:

假设存在一个长度为N的数字序列,要求参赛者利用K个乘号将其划分为K+1个部分,并寻找一种划分方式,使得这K+1个部分的乘积达到最大值。

为了确保所有选手能够准确理解题目的含义,主持人还提供了一个具体的示例进行说明:

假设有一个数字序列:312,当N=3且K=1时,存在以下两种划分方式:

312=36
31
2=62

此时符合题目要求的最佳结果是:31*2=62

现在,请你协助你的好友XZ编写一个程序以求得正确的答案。

输入格式如下:

程序输入包含两行内容:
第一行包括两个自然数N和K(其中6≤N≤40,且1≤K≤6)
第二行则是一个长度为N的数字字符串。

输出格式如下:

输出所求得的最大乘积结果(该结果应为一个自然数)。

样例输入如下:

4 2
1231
样例输出如下:
62


代码块

复制代码
    #include<stdlib.h>
    #include<stdio.h>
    #define MAX

全部评论 (0)

还没有任何评论哟~