反过来想就很简单了: 假设已经取了m-1个数,第m个数应该取哪个?显然应该取三个数组中,除去已选的m-1个数,剩下的“首元素”中的最大值。
写成函数表达式就是:
f(m) = f(m-1) + max(a1[i], a2[j], a3[k])
i + j + k = m - 1
程序示例(可以优化):
while (i+j+k < m) {
temp = max(a1[i], a2[j], a3[k]);
switch (temp) {
case a1[i]: i ++;
case a2[j]: j ++;
case a3[k]: k ++;
default: break;
}
}
【 在 yellowChange 的大作中提到: 】
: 三个数组 每个数组m个数(没按大小排序)
: 要求从三个数组中找出m个数的和的最大值,每个数组可以取0到m个数,但必须是该数组的前几个数连续取
: 怎么做,不用暴力解法的话
发自「今日水木 on MI 5」
--
FROM 171.43.249.*