你这是错的。比如:
9 9 9
8 8 8
7 7 10000
你这个贪心算法取不到m=3时的最大值。
【 在 dudul (虫儿飞) 的大作中提到: 】
: 标 题: Re: 问个算法题
: 发信站: 水木社区 (Sat Sep 25 07:02:38 2021), 站内
:
: 反过来想就很简单了: 假设已经取了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」
: --
: 富人有他的那套规则,而富人的规则对于绝大多数穷人和中产阶级来说还是个秘密。
: --富爸爸 穷爸爸
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 171.43.249.*]
--
FROM 76.126.252.*