C++ 实现:乌拉乎自助餐厅饱腹问题求解及代码详解
以下是解决该问题的C++代码: ```cpp #include <iostream> using namespace std; int main() { int n, m; // 输入食物的数量n和乌拉乎的饥饿度m cin >> n >> m; int satiety; for (int i = 1; i <= n; i++) { // 跳过乌拉乎不喜欢的食物(编号为3的倍数或7的倍数) if (i % 3 == 0 || i % 7 == 0) { continue; } // 输入当前食物的饱腹值 cin >> satiety; // 减去当前食物的饱腹值 m -= satiety; // 判断是否吃饱 if (m <= 0) { // 输出吃饱时吃的食物编号 cout << i << endl; return 0; } } // 如果选完所有食物还没吃饱,输出 -1 cout << -1 << endl; return 0; } ``` 代码解释: 1. 输入部分:首先读取食物的数量`n`和乌拉乎的饥饿度`m`。 2. 循环遍历食物:使用`for`循环从编号1到`n`遍历每一盘食物。 3. 跳过不喜欢的食物:如果当前食物的编号是3的倍数或者7的倍数,则跳过该食物,继续处理下一盘食物。 4. 处理喜欢的食物:读取当前喜欢的食物的饱腹值,将其从乌拉乎的饥饿度中减去。 5. 判断是否吃饱:每次减去饱腹值后,检查乌拉乎的饥饿度是否小于等于0。如果是,则输出当前食物的编号并结束程序。 6. 未吃饱的情况:如果遍历完所有食物后,乌拉乎的饥饿度仍然大于0,则输出 -1。 复杂度分析: - 时间复杂度:$O(n)$,其中`n`是食物的数量。因为只需要遍历一次所有食物。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 495点数解答 | 2025-11-22 17:08:50]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)231
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)468
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)359
- 浙闽“板凳龙”舞龙队 300 秒螺线盘入:位置与速度全揭秘(阿里通义 | 886点数解答 | 2024-09-07 10:31:31)635
- 浙闽“板凳龙”舞龙队 300 秒位置与速度数学模型揭秘(GPT | 565点数解答 | 2024-09-07 10:32:56)532
- 223节板凳龙沿等距螺线盘入:300秒内位置与速度的数学揭秘 (讯飞星火 | 443点数解答 | 2024-09-07 10:34:10)380
- 浙闽“板凳龙”300秒舞龙轨迹与速度:数学模型揭秘!(字节豆包 | 522点数解答 | 2024-09-07 10:35:06)352
- Excel 销售数据难题:2024 年 Q3 及特定时段销售情况计算全攻略(字节豆包 | 762点数解答 | 2024-11-06 19:11:51)194
- 从封闭到觉醒:中国在西方文化冲击下的曲折蜕变(讯飞星火 | 331点数解答 | 2024-11-30 21:50:57)195
- 陈独秀〈吾人最后之觉悟〉:文化冲突下的觉醒与奋进之路(百度文心 | 458点数解答 | 2024-11-30 21:51:52)205