2023-09-22 LeetCode每日一题(将钱分给最多的儿童)

2023-09-22每日一题

一、题目编号

2591. 将钱分给最多的儿童

二、题目链接

点击跳转到题目位置

三、题目描述

给你一个整数 money ,表示你总共有的钱数(单位为美元)和另一个整数 children ,表示你要将钱分配给多少个儿童。

你需要按照如下规则分配:

  • 所有的钱都必须被分配。
  • 每个儿童至少获得 1 美元。
  • 没有人获得 4 美元。
    请你按照上述规则分配金钱,并返回 最多 有多少个儿童获得 恰好 8 美元。如果没有任何分配方案,返回 -1 。

示例 1:
2023-09-22 LeetCode每日一题(将钱分给最多的儿童)_第1张图片

示例 2:
在这里插入图片描述
提示:

  • 1 <= money <= 200
  • 2 <= children <= 30

四、解题代码

class Solution {
public:
    int distMoney(int money, int children) {
        if (money < children) {
            return -1;
        }
        money -= children;
        int cnt = min(money / 7, children);
        money -= cnt * 7;
        children -= cnt;
        if ((children == 0 && money > 0) || (children == 1 && money == 3)) {
            cnt--;
        }
        return cnt;
    }
};


五、解题思路

(1) 贪心

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)