C++实现小核桃攻击敌人护盾能量模拟
### 🍭思路分析 本题需要根据输入的敌人护盾初始能量值、攻击次数和每次攻击的类型及目标,模拟小核桃的攻击过程,最终输出所有敌人的护盾能量值。 ### 💻代码实现 ```cpp #include <iostream> #include <vector> using namespace std; // 粒子炮攻击,所有敌人护盾能量值减5 void particleCannon(vector<int>& shields) { for (int i = 0; i < shields.size(); ++i) { shields[i] = max(0, shields[i] - 5); } } // 集束粒子炮攻击,指定敌人及其相邻敌人护盾能量值减半 void clusterParticleCannon(vector<int>& shields, int target) { int index = target - 1; int size = shields.size(); // 处理指定敌人的护盾 shields[index] = shields[index] / 2; // 处理左边相邻敌人的护盾 if (index > 0) { shields[index - 1] = shields[index - 1] / 2; } // 处理右边相邻敌人的护盾 if (index < size - 1) { shields[index + 1] = shields[index + 1] / 2; } } int main() { // 读取5名敌人的护盾能量值 vector<int> shields(5); for (int i = 0; i < 5; ++i) { cin >> shields[i]; } // 读取攻击次数 int n; cin >> n; // 模拟n次攻击 for (int i = 0; i < n; ++i) { int attackType; cin >> attackType; if (attackType == 1) { particleCannon(shields); } else if (attackType == 2) { int target; cin >> target; clusterParticleCannon(shields, target); } } // 输出攻击后5名敌人的护盾能量值 for (int i = 0; i < 5; ++i) { if (i > 0) { cout << " "; } cout << shields[i]; } cout << endl; return 0; } ``` ### 📝代码解释 1. **`particleCannon`函数**:该函数接受一个存储敌人护盾能量值的向量`shields`作为参数,对向量中的每个元素减去5,并确保结果不小于0。 2. **`clusterParticleCannon`函数**:该函数接受`shields`向量和目标敌人的编号`target`作为参数。首先将目标敌人的护盾能量值减半,然后根据目标敌人的位置,将其左右相邻敌人的护盾能量值减半。 3. **`main`函数**: - 读取5名敌人的护盾能量值并存储在`shields`向量中。 - 读取攻击次数`n`。 - 循环`n`次,根据输入的攻击类型调用相应的攻击函数。 - 输出攻击后5名敌人的护盾能量值。 ### 🚀复杂度分析 - **时间复杂度**:$O(n)$,其中$n$是攻击次数。每次攻击的处理时间为常数。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 🌟开发建议 - **输入验证**:在实际应用中,可以添加输入验证,确保输入的护盾能量值和攻击类型在合理范围内。 - **代码扩展性**:如果敌人数量或攻击类型增加,可以考虑将敌人数量和攻击类型作为参数传入,提高代码的扩展性。 ######[AI写代码神器 | 874点数解答 | 2026-08-01 21:29:30]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)549
- 网络安全必知:CSRF 攻击揭秘与七大防御妙招! (百度文心 | 239点数解答 | 2023-11-09 18:35:43)298
- 网络安全工程师揭秘:DOS、DDoS、DRDoS攻击原理与防范策略(百度文心 | 327点数解答 | 2023-11-09 18:35:59)293
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)464
- 洛谷乒乓球题解:11 分制与 21 分制比赛结果计算全攻略(DeepSeek | 675点数解答 | 2025-04-28 18:19:45)367
- C++ 模拟:助冒险者用神秘数字构建直角三角形,开发要点大揭秘! (DeepSeek | 156点数解答 | 2025-09-14 21:30:10)410
- P1007:小核桃数组变换难题,Python代码揭秘最终平方和!(字节豆包 | 416点数解答 | 2026-02-07 18:24:18)113
- P1007小核桃数组变换难题:C++代码求解最终两数平方和! (字节豆包 | 651点数解答 | 2026-02-07 18:25:02)142
- “天气之子”试炼:用代码破解天气预报成功天数之谜,复杂度分析揭秘!(字节豆包 | 797点数解答 | 2026-02-07 18:29:12)86
- 揭秘天气之子试炼:巧用算法计算天气预报成功天数(字节豆包 | 734点数解答 | 2026-02-07 18:30:34)113
- C++实现:根据给定参数打印栅栏图案(P1015禾木与栅栏)(字节豆包 | 160点数解答 | 2026-02-07 18:36:06)84
- Telegram流量查询机器人开发全攻略(字节豆包 | 1598点数解答 | 2026-05-31 14:15:26)47