以下是解决该问题的C++代码: ```cpp #include <iostream> using namespace std; int main() { int n; // 输入序列的长度 cin >> n; int a[1005]; // 输入序列的每个元素 for (int i = 0; i < n; i++) { cin >> a[i]; } int ans = 0; // 枚举所有可能的三元组 (i, j, k) for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { // 检查 ai, aj, ak 三个元素是否互不相同 if (a[i] != a[j] && a[i] != a[k] && a[j] != a[k]) { ans++; } } } } // 输出满足条件的三元组的数量 cout << ans << endl; return 0; } ``` 代码解释: 1. 输入部分:首先读取序列的长度`n`,然后读取序列的`n`个元素并存储在数组`a`中。 2. 枚举三元组:使用三重循环枚举所有可能的三元组`(i, j, k)`,其中`1 ≤ i < j < k ≤ n`。 3. 条件判断:对于每个三元组,检查`ai`、`aj`和`ak`是否互不相同。如果满足条件,则将计数器`ans`加1。 4. 输出结果:最后输出满足条件的三元组的数量。 额外需要注意的逻辑点: 1. 注意数组的下标从0开始,而题目中`i`、`j`、`k`是从1开始计数的,但在代码实现中要进行相应调整。 2. 当序列长度`n`较大时,该算法的时间复杂度为$O(n^3)$,可能会导致运行时间较长,需要注意性能问题。 3. 代码中数组的大小定义为1005,在实际使用中要根据`n`的范围调整数组大小,避免数组越界。 [2025-08-03 12:28:37 | AI写代码神器 | 530点数解答]