给你一个整数 money ,表示你总共有的钱数(单位为美元)和另一个整数 children ,表示你要将钱分配给多少个儿童。
你需要按照如下规则分配:
所有的钱都必须被分配。
每个儿童至少获得 1 美元。
没有人获得 4 美元。
请你按照上述规则分配金钱,并返回 最多 有多少个儿童获得恰好 8 美元。如果没有任何分配方案,返回 -1 。
示例 1:
输入:money = 20, children = 3
输出:1
解释:
最多获得 8 美元的儿童数为 1 。一种分配方案为:
-给第一个儿童分配 8 美元。
-给第二个儿童分配 9 美元。
-给第三个儿童分配 3 美元。
没有分配方案能让获得 8 美元的儿童数超过 1 。
示例 2:
输入:money = 16, children = 2
输出:2
解释:每个儿童都可以获得 8 美元。
提示:
1 <= money <= 200
2 <= children <= 30
class Solution {public int distMoney(int money, int children) {//不满足第二个规则if (money < children)return -1;//优先考虑分给儿童 8 美元,剩余钱数不满足规则则少分一份 8 美元for (int i = money / 8; i > 0; i--) {int leftMoney = money - i * 8;int leftChidren = children - i;//超出儿童数量if (leftChidren < 0)continue;//不满足第二个规则if (leftMoney < leftChidren)continue;else if (leftMoney > leftChidren)//不满足第一个规则if (leftChidren == 0)continue;//不满足第三个规则if (leftMoney == 4 && leftChidren == 1)continue;return i;}return 0;}
}