P1016禾木分核桃问题:巧用贪心算法求解最少分配核桃数
```cpp #include <iostream> #include <algorithm> using namespace std; int main() { int n; cin >> n; int a[105]; int sum = 0; // 读取每个同学的核桃数并计算总和 for (int i = 0; i < n; i++) { cin >> a[i]; sum += a[i]; } // 计算初始的平均核桃数 int average = sum / n; // 若平均有剩余,需要增加平均核桃数以满足要求 if (sum % n != 0) { average++; } // 计算需要额外分配的核桃数 int result = 0; for (int i = 0; i < n; i++) { if (a[i] < average) { result += average - a[i]; } } cout << result << endl; return 0; } ``` 代码解释: 1. 输入处理:首先读取同学的数量`n`,接着用数组`a`存储每个同学初始的核桃数,同时累加所有同学的核桃总数存于`sum`。 2. 计算平均核桃数:求出初始的平均核桃数`average`,若总和`sum`不能被`n`整除,需要将平均核桃数加 1,保证有足够的核桃分给每位同学。 3. 计算需额外分配的核桃数:遍历数组`a`,若某个同学的核桃数小于平均核桃数,就计算出该同学需要的额外核桃数,并累加到`result`中。 4. 输出结果:输出`result`,即禾木至少需要分出去的核桃总数。 ######[AI问答 | 404点数解答 | 2026-02-07 18:37:04]
- Python 实现贪心算法:巧解找零钱问题及需注意要点 (字节豆包 | 398点数解答 | 2025-01-04 18:06:11)118
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)399
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)194
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)175
- 2024 STEMA T6:解密T1188超难密码锁,Python区间DP解法揭秘!(字节豆包 | 718点数解答 | 2025-11-08 22:09:01)94
- DotA 1vN 难题:巧用贪心策略最小化 HP 损耗!(DeepSeek | 609点数解答 | 2026-01-01 00:14:47)27
- P1016禾木分核桃问题:巧用贪心算法求解最少分配核桃数(字节豆包 | 404点数解答 | 2026-02-07 18:37:04)27
- CSP - J组:小核桃将积木堆成不超m堆的最小能量计算及代码详解(字节豆包 | 780点数解答 | 2026-02-07 18:38:58)21
- Python切片操作巧解经典算法:二维数组90°旋转(阿里通义 | 205点数解答 | 2023-10-31 11:05:29)335
- 揭秘iOS开发:常用算法大集合,提升应用性能与体验!(阿里通义 | 246点数解答 | 2023-11-08 00:43:08)289
- 深入解析:Vue2.x与Vuex3.x渲染器的Diff算法奥秘(阿里通义 | 222点数解答 | 2023-11-09 01:35:41)363
- 突破 long 范围限制:用 BigInteger 类实现超大数字竖式乘法运算( | 555点数解答 | 2024-03-17 10:56:49)366