定义 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