酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]