作业帮 > 综合 > 作业

C语言动态规划乘积最大(cjzd)设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/25 00:45:19
C语言动态规划
乘积最大(cjzd)
设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大
同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:
有一个N=3的数字串:312,当K=1时会有以下两种分法:
1) 3*12=36
2) 31*2=62
这时,符合题目要求的结果是:31*2=62
输入
程序的输入共有两行:
第一行共有2个自然数N,K(6≤N≤20,1≤K≤6)
第二行是一个长度为N的数字串.
输出
结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数).
样例输入
4 2
1231
样例输出
62
//求详细注释源代码.
C语言动态规划乘积最大(cjzd)设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得
定义 d(a, b) 为原字符串中从第 a 个字符开始,包含 b 个阿拉伯数字的数.
定义 s(in, ik) 为以下情况中,最后一个 * 前面 ik 个数的最大乘积:插入 ik + 1 个 * ,最后一个 * 前面有 in + 1 个阿拉伯数字.
则:
s(in, 0) = d(0, in + 1);
s(in, ik) = min{ s(ip, ik - 1) * d(ip + 1, in - ip) } (其中 ip = 0, 1, 2, ..., in - 1);
题目结果则是 s(n - 1, k + 1) .
下面是程序,CUnsignedBigNumber 我现写的,可以的话就随便搞一个吧,实在不行我这个再给你.
#include
#include
CUnsignedBigNumber BiggestProduct(unsigned int n, unsigned int k, const char * digits)
{
if (n
C语言动态规划乘积最大(cjzd)设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得 c语言编程:设有一个数组,从键盘输入10个整数,要求找出最大的数和它的下标,并把它和数组中的第一个交换 C语言:数列的移动给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前 C语言砝码称重设有n种砝码,第k种砝码有Ck个,每个重量均为Wk,求:用这些砝码能秤出的不同重量的个数,但不包括一个砝码 c语言:定义一个函数digit(n,k),它返回整数n的从右边开始数的第k个数字的值 有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言) 输入一个正整数n,再输入任意n个整数,计算并输出这n个整数的和.要求使用动态内存分配方法为这n个整数分 把19分成n个自然数的和,怎样分才能使它的乘积最大. 我是个C语言初学者,输入两个数并找出其中最大的一个,要求要有主调函数和被调函数 C语言:定义一个符号常量N,从键盘上输入有N个元素的数组a,找出其中的最大数及其下标. 请教3道初中数学题将12分成2部分,使他们的乘积为正整数K,那么:1)将12分成的2部分,可以使它们的乘积K等于20或2 k个科学家p种语言k个科学家使用p种语言任何2个科学家至少有一种语言相同任何2个科学家使用的语言又不完全相同求证:k>=