酷代码 AI
菜单
服务商

C++ 实现珠心算加法测验:计算集合中满足两数之和条件的数的个数

```cpp #include <iostream> #include <set> using namespace std; int main() { int n; cin >> n; int numbers[100]; set<int> sums; set<int> ans; // 读取输入的正整数 for (int i = 0; i < n; i++) { cin >> numbers[i]; } // 计算所有不同两数之和 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { sums.insert(numbers[i] + numbers[j]); } } // 检查集合中的数是否等于另外两个数之和 for (int i = 0; i < n; i++) { if (sums.find(numbers[i]) != sums.end()) { ans.insert(numbers[i]); } } // 输出结果 cout << ans.size() << endl; return 0; } ``` 代码解释: 1. 输入处理:首先读取正整数的个数`n`,然后将这些正整数存储在数组`numbers`中。 2. 计算两数之和:使用两层循环遍历数组,计算所有不同两数之和,并将这些和存储在`set`容器`sums`中。 3. 检查是否满足条件:遍历数组中的每个数,检查它是否在`sums`集合中。如果存在,则将该数插入到另一个`set`容器`ans`中。 4. 输出结果:由于`set`容器会自动去重,所以`ans`的大小就是满足条件的数的个数,将其输出。 复杂度分析: - 时间复杂度:$O(n^2)$,主要是计算两数之和的两层循环。 - 空间复杂度:$O(n^2)$,主要用于存储两数之和的集合。 ######[AI问答 | 452点数解答 | 2025-11-24 19:17:14]

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