做菜的顺序

这篇博客主要分析了LeetCode上的一道动态规划题目——减少菜品。通过数学证明,解释了解题思路,指出解法的本质是判断新增菜品与已选菜品喜好度之和是否大于0,以此来优化满意度总和。
摘要由CSDN通过智能技术生成

一、题目描述

题目链接:https://leetcode-cn.com/problems/reducing-dishes/

 

二、题目分析

力扣将这道题归为动态规划的范畴,事实上解法是数学证明。只能说分析的过程有动态规划内味。

首先我们最直观的想法是,尽量找到满意度大的菜,然后再看看能不能加上别的菜。那么能加菜的条件是什么呢?我们分析一下。假设有数组{c1,c2,c3,c4},以降序排列,则c1符合我们第一个要求,当只选第一个菜的时候,sum为c1,此时,若我们加上第二道菜,则有sum = 1 * c2 + 2 * c1,只有当c2 + 2 * c1 > c1时,我们才能加菜。这时移项一下,有c1 + c2 > 0,再加上其他菜也是同理证明,我们发现,只有加上的那个菜,和前面菜的喜好度之和大于0,加上这个菜才会让我们的sum增加。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值