酷代码 AI
菜单
服务商

小核桃的护盾攻击计算(C++代码简单版)

好的,我们一步一步来看这个问题。我们要小朋友也能看懂,所以慢一点解释。 ## 📥 输入格式 先读懂题目要我们读什么东西: - 第一行:5个数字,代表5个敌人的初始护盾值。 - 第二行:一个整数 n,表示攻击总次数。 - 第三行:n个1或2,表示每次攻击是哪种(1=粒子炮,2=集束粒子炮)。 ## 🧠 攻击规则 **粒子炮(1)**: - 每一个敌人的护盾都减5。 **集束粒子炮(2)**: - 选择一个敌人,并指定他和他旁边的人。 - 这三个人的护盾值都除以2(注意是整除,即丢弃小数部分)。 - 必须注意: - 如果攻击第1个敌人,他只有右边的邻居(敌人2),所以只影响敌人1和敌人2。 - 如果攻击第5个敌人,他只有左边的邻居(敌人4),所以只影响敌人4和敌人5。 - 其他人攻击则影响3个。 每次攻击后如果护盾能量变成负数,则立即置为0。 ## 📝 C++ 代码(写得像小朋友) ```cpp #include <iostream> using namespace std; int main() { // 5个敌人护盾值 int shield[5]; for (int i = 0; i < 5; i++) { cin >> shield[i]; } // 攻击次数 int n; cin >> n; // 每次攻击是1还是2 int attack; for (int i = 0; i < n; i++) { cin >> attack; if (attack == 1) { // 粒子炮:全部减5 for (int j = 0; j < 5; j++) { shield[j] = shield[j] - 5; if (shield[j] < 0) { shield[j] = 0; } } } else if (attack == 2) { // 集束粒子炮:指定敌人位置(1~5) int pos; cin >> pos; // 数组是从0开始,所以要减1 pos = pos - 1; // 先处理自己 shield[pos] = shield[pos] / 2; // 左边的人(如果有) if (pos > 0) { shield[pos - 1] = shield[pos - 1] / 2; } // 右边的人(如果有) if (pos < 4) { shield[pos + 1] = shield[pos + 1] / 2; } // 处理负数变0 for (int j = 0; j < 5; j++) { if (shield[j] < 0) { shield[j] = 0; } } } } // 输出最后结果 for (int i = 0; i < 5; i++) { cout << shield[i] << " "; } cout << endl; return 0; } ``` ## 🧪 运行例子 输入: ``` 100 90 80 70 60 3 1 2 3 2 1 ``` 解释: 1. 第一次攻击(1号粒子炮):全部减5 -> 95 85 75 65 55 2. 第二次攻击(2号集束粒子炮打位置3): - 位置3(75/2=37),左边位置2(85/2=42),右边位置4(65/2=32) - 变成 95 42 37 32 55 3. 第三次攻击(2号集束粒子炮打位置1): - 位置1(95/2=47),右边位置2(42/2=21) - 变成 47 21 37 32 55 输出: ``` 47 21 37 32 55 ``` ## 📌 注意 - 每次集束粒子炮攻击都要指定位置(输入中是2后面跟一个数字)。 - 记得每次检查是否负了,变0。 ######[AI问答 | 939点数解答 | 2026-06-05 19:24:38]

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