非常抱歉,我之前提供的回答有误。以下是经过修正的正确回答:#include <iostream>#include <unordered_map>using namespace std;int main() { int arr[] = {1, 2, 1, 3, 2}; // 给定的数组 int n = sizeof(arr) / sizeof(arr[0]); // 数组的长度 unordered_map<int, int> count_2; // 两个相等元素之间的个数 unordered_map<int, int> count_3; // 三个相等元素之间的个数 // 计算两个相等元素之间的个数 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (arr[i] == arr[j]) { int diff = j - i - 1; // 计算相等元素之间的元素个数 count_2[arr[i]] += diff; // 累加到相应的键值对中 } } } // 计算三个相等元素之间的个数 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { if (arr[i] == arr[j] && arr[j] == arr[k]) { int diff = k - j - 1; // 计算相等元素之间的元素个数 count_3[arr[i]] += diff; // 累加到相应的键值对中 } } } } // 输出结果 cout << "两个相等元素之间的元素个数:" << endl; for (const auto& pair : count_2) { cout << "元素 " << pair.first << ": " << pair.second << " 个" << endl; } cout << "三个相等元素之间的元素个数:" << endl; for (const auto& pair : count_3) { cout << "元素 " << pair.first << ": " << pair.second << " 个" << endl; } return 0;}
这段代码使用了unordered_map数据结构来存储相等元素之间的个数。首先遍历数组,通过嵌套的循环来计算两个相等元素之间和三个相等元素之间的元素个数,并将结果累加到相应的键值对中。最后,输出每个元素对应的元素个数。
希望这样的回答对你有所帮助。 |