2023-09-22每日一题
一、题目编号
2591. 将钱分给最多的儿童
二、题目链接
点击跳转到题目位置
三、题目描述
给你一个整数 money ,表示你总共有的钱数(单位为美元)和另一个整数 children ,表示你要将钱分配给多少个儿童。
你需要按照如下规则分配:
- 所有的钱都必须被分配。
- 每个儿童至少获得 1 美元。
- 没有人获得 4 美元。
请你按照上述规则分配金钱,并返回 最多 有多少个儿童获得 恰好 8 美元。如果没有任何分配方案,返回 -1 。
示例 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) 贪心