C++ 求解长度为 n 数组中满足条件的三元组数量,附代码详解!
以下是解决该问题的C++代码: ```cpp #include <iostream> #include <unordered_map> using namespace std; // 计算组合数 C(n, 3) long long combination(int n) { // 组合数公式 C(n, 3) = n * (n - 1) * (n - 2) / 6 return (long long)n * (n - 1) * (n - 2) / 6; } int main() { int n; cin >> n; unordered_map<int, int> count; // 用于记录每个元素出现的次数 // 读取数组元素并统计每个元素的出现次数 for (int i = 0; i < n; i++) { int num; cin >> num; count[num]++; } long long result = 0; // 遍历每个元素的出现次数,计算满足条件的三元组数量 for (auto it = count.begin(); it != count.end(); it++) { int freq = it->second; if (freq >= 3) { // 对于出现次数不少于3次的元素,计算其能组成的三元组数量 result += combination(freq); } } cout << result << endl; return 0; } ``` 代码解释: 1. 组合数计算函数 `combination`:该函数用于计算从$n$个元素中选取$3$个元素的组合数,使用公式$C(n, 3) = \frac{n\times(n - 1)\times(n - 2)}{6}$。 2. 统计元素出现次数:使用 `unordered_map` 来记录每个元素的出现次数。遍历输入的数组,对于每个元素,将其在 `unordered_map` 中的计数加$1$。 3. 计算满足条件的三元组数量:遍历 `unordered_map`,对于每个出现次数不少于$3$次的元素,计算其能组成的三元组数量,并累加到结果中。 4. 输出结果:最后输出满足条件的三元组的总数。 额外需要注意的逻辑点: 1. 由于结果可能很大,需要使用 `long long` 类型来存储结果,避免整数溢出。 2. 在计算组合数时,要确保先进行乘法运算,再进行除法运算,以避免整数除法带来的精度损失。 3. 注意检查元素的出现次数是否不少于$3$次,只有出现次数不少于$3$次的元素才能组成满足条件的三元组。 ######[AI写代码神器 | 598点数解答 | 2025-05-31 14:16:57]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)250
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)251
- 策略游戏大揭秘:小 L 与小 Q 最优策略下每轮得分计算全解析(字节豆包 | 676点数解答 | 2025-12-12 18:49:42)72
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)295
- 50 分判断题大揭秘:变量、条件、循环与数组知识正误辨析(字节豆包 | 229点数解答 | 2025-12-21 19:15:16)78
- Python 破解:计算序列中满足特定取余条件元素的数量(字节豆包 | 174点数解答 | 2025-05-13 21:29:55)200
- Python开发必备:字符串、列表、元组、字典常用的5个方法大揭秘!(阿里通义 | 325点数解答 | 2023-11-08 00:51:48)270
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)248
- C++ 实现:根据给定正整数构造 3×3 方阵并计算满足条件的方案数(阿里通义 | 875点数解答 | 2024-11-13 16:38:24)259
- C++实现:低复杂度求解 3×3 方阵构造方案数(阿里通义 | 708点数解答 | 2024-11-13 16:45:15)297
- Python 高效解决 U 王国社区端午节粽子分配数量计算问题(DeepSeek | 218点数解答 | 2025-05-31 18:33:52)209
- C++ 实现:根据家庭人数精准计算 U 王国社区粽子分配总数(DeepSeek | 250点数解答 | 2025-05-31 18:36:11)181