【华为面试题】贪心算法(二)

题目

一个商人有一个有限的仓库空间,他需要在指定的天数内通过买卖商品来最大化其利润。每种商品都有其特定的价格和仓库存储上限。你的任务是计算商人在给定的天数内可以获得的最大利润。

输入描述:

商品的数量 number(例如:3)。
商品售货的天数 days(例如:3)。
number 个整数,代表每种商品在仓库中的最大存储量(例如:4 5 6)。
接下来的 number 行,每行有 days 个整数,代表每种商品每天的价格。
输出描述:

一个整数,代表商人在 days 天内可以获得的最大利润。

示例:

输入:

3
3
4 5 6
1 2 3
4 3 2
1 5 3

输出:

32

代码

// 定义函数计算最大利润
function maxProfit(item_number, days, max_items, prices) {
  let max_profit = 0; // 初始化最大利润为0

  // 遍历每一种商品
  for (let i = 0; i < item_number; i++) {
    let min_price = prices[i][0]; // 将每种商品的第一天价格作为初始的最小价格
    let profit_for_item = 0; // 初始化每种商品的最大利润为0

    // 遍历每天的价格
    for (let j = 1; j < days; j++) {
      // 更新商品的最低价格
      min_price = Math.min(min_price, prices[i][j]);
      // 计算当前最大利润:当前价格减去最小价格
      profit_for_item = Math.max(profit_for_item, prices[i][j] - min_price);
    }

    // 累加每种商品的最大利润到总利润中
    max_profit += profit_for_item * max_items[i];
  }

  return max_profit; // 返回总的最大利润
}

const item_number = 3; // 商品数量
const days = 3; // 商品售卖的天数
const max_items = [4, 5, 6]; // 每种商品的最大存储量
const prices = [
  // 每种商品每天的价格
  [1, 2, 3],
  [4, 3, 2],
  [1, 5, 3],
];

console.log(maxProfit(item_number, days, max_items, prices));


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值