写一份不使用STL的C++代码:给出项数为 n 的整数数列a1…n。定义函数 f(i)代表数列中第 i 个元素之后第一个大于 ai 的元素的下标,即 f(i)=mini<j≤n,aj>aj {j}。若不存在,则 f(i)=0。试求出 f(1…n)。
时间: 2024-04-17 07:26:53 浏览: 120
每天学点C++(C++实例教程:教程+源码)STL函数对象.zip
好的,以下是一份不使用STL的C++代码来解决给定数列的问题:
```cpp
#include <iostream>
const int MAX_N = 100;
void findNextGreaterIndices(int arr[], int n, int f[]) {
for (int i = 0; i < n; i++) {
f[i] = 0; // 初始化 f[i] 为 0
for (int j = i + 1; j < n; j++) {
if (arr[j] > arr[i]) {
f[i] = j + 1; // 找到第一个大于 arr[i] 的元素的下标
break;
}
}
}
}
int main() {
int n;
int arr[MAX_N];
int f[MAX_N];
std::cout << "请输入数列的项数 n:";
std::cin >> n;
std::cout << "请输入数列的元素:";
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
}
findNextGreaterIndices(arr, n, f);
std::cout << "f(1...n):";
for (int i = 0; i < n; i++) {
std::cout << f[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码首先定义了一个常量 `MAX_N` 来表示数组的最大长度。然后,定义了一个函数 `findNextGreaterIndices` 来计算每个元素的 `f(i)` 值。在 `main` 函数中,首先读取数列的项数 `n`,然后读取数列的元素。接下来调用 `findNextGreaterIndices` 函数计算并输出 `f(1...n)` 的值。
阅读全文