酷代码 AI
菜单
服务商

C++编程:揭秘黑衣人与小队黄宝石分配数量计算法

以下是一个用 C++ 编写的程序,用于计算黑衣人和小队分别能拿到多少块黄宝石。 ```cpp #include <iostream> #include <vector> // 函数用于计算黑衣人和小队分别能拿到的黄宝石数量 std::pair<int, int> distributeGems(const std::vector<int>& gemWeights, int brokenGemWeight) { int teamCount = 0; // 小队能拿到的黄宝石数量 int selfCount = 0; // 黑衣人自己能拿到的黄宝石数量 // 遍历所有黄宝石碎片的重量 for (int weight : gemWeights) { if (weight < brokenGemWeight) { teamCount++; // 如果重量比摔碎的黄宝石轻,小队拿到的数量加 1 } else { selfCount++; // 否则,黑衣人自己拿到的数量加 1 } } return {teamCount, selfCount}; } int main() { std::vector<int> gemWeights = {2, 5, 3, 7, 1, 4}; // 黄宝石碎片的重量 int brokenGemWeight = 4; // 摔碎黄宝石的重量 // 调用函数计算数量 auto result = distributeGems(gemWeights, brokenGemWeight); // 输出结果 std::cout << "小队能拿到的黄宝石数量: " << result.first << std::endl; std::cout << "黑衣人自己能拿到的黄宝石数量: " << result.second << std::endl; return 0; } ``` 代码说明: 1. `distributeGems` 函数: - 该函数接受一个 `std::vector<int>` 类型的参数 `gemWeights`,表示所有黄宝石碎片的重量,以及一个 `int` 类型的参数 `brokenGemWeight`,表示摔碎黄宝石的重量。 - 函数内部使用 `teamCount` 和 `selfCount` 分别记录小队和黑衣人能拿到的黄宝石数量。 - 遍历 `gemWeights` 中的每个重量,如果该重量比 `brokenGemWeight` 轻,则 `teamCount` 加 1;否则,`selfCount` 加 1。 - 最后返回一个 `std::pair<int, int>` 类型的结果,包含小队和黑衣人能拿到的黄宝石数量。 2. `main` 函数: - 定义一个 `std::vector<int>` 类型的变量 `gemWeights`,存储所有黄宝石碎片的重量。 - 定义一个 `int` 类型的变量 `brokenGemWeight`,表示摔碎黄宝石的重量。 - 调用 `distributeGems` 函数计算数量,并将结果存储在 `result` 中。 - 输出小队和黑衣人能拿到的黄宝石数量。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是黄宝石碎片的数量。因为只需要遍历一次所有的黄宝石碎片。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 722点数解答 | 2025-10-18 19:16:24]

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