战斗开始前,双方先对自己的武器排好使用顺序,然后再一件一件地按顺序使用。编号小的武器,排在前面。若有多支arrow,用过的排在前面。排好序后,攻击者按此排序依次对敌人一件一件地使用武器。如果一种武器有多件,那就都要用上。如何根据战斗的局数知道这是哪种武器
时间: 2024-02-22 21:59:06 浏览: 63
行业分类-设备装置-排纸托盘单元、后处理装置、图像形成装置及系统.zip
根据战斗的局数知道当前使用的是哪种武器,可以先计算出当前局数应该使用的武器编号。假设有n件武器,每个局数使用k件武器,那么第i个局数使用的武器编号为 (i-1)*k + 1 到 i*k 中最小的尚未使用过的编号。例如,如果n=6,k=2,那么第1个局数使用的是编号为1和2的武器,第2个局数使用的是编号为3和4的武器,以此类推。
具体实现可以用以下代码实现:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> weapons = {3, 2, 5, 1, 4, 2}; // 武器使用顺序
int n = weapons.size(); // 武器数量
int k = 2; // 每个局数使用的武器数量
int game_num = 5; // 当前局数
int start = (game_num - 1) * k + 1; // 当前局数使用的第一个武器编号
int end = game_num * k; // 当前局数使用的最后一个武器编号
vector<int> used_weapons; // 已经使用过的武器
for (int i = 0; i < weapons.size(); i++) {
if (find(used_weapons.begin(), used_weapons.end(), i+1) == used_weapons.end()) { // 如果这个编号的武器还没有使用过
if (i+1 >= start && i+1 <= end) { // 如果是当前局数要使用的武器
cout << "当前使用的是第" << i+1 << "件武器" << endl;
used_weapons.push_back(i+1); // 标记为使用过
}
}
}
return 0;
}
```
这段代码中,使用了一个vector来存储武器的使用顺序。然后,根据每个局数使用的武器数量和编号规则,计算出当前局数使用的武器编号范围,然后遍历所有武器,找到符合条件的武器进行使用,并将使用过的武器编号保存下来,以便下一次判断是否使用过。最终输出的结果就是当前局数使用的所有武器的编号。
阅读全文