假设给出一个数组A。我们必须找到该数组中每个元素的多个替代者。超越者是更大的元素,位于当前元素数组的右侧。假设A = {2,7,5,3,0,8,1},则超越者为{4,1,1,1,2,2,0,0},所以2在右边有4个数字,这些数字更大比4,其他规则相同。解决方案非常简单,两个嵌套循环在那里,对于每个元素,它将计算超越者,然后将其存储到另一个数组中。
#include <iostream> using namespace std; void gerSurpassers(int arr[], int surpassers[], int n){ for(int i = 0; i<n; i++){ int count = 0; for(int j = i+1; j<n; j++){ if(arr[j] > arr[i]) count++; } surpassers[i] = count; } } void displayArray(int arr[], int n){ for(int i = 0; i<n; i++){ cout << arr[i] << " "; } cout << "\n"; } int main() { int arr[] = {2, 7, 5, 3, 0, 8, 1}; int n = sizeof(arr) / sizeof(arr[0]); int surpassers[n]; cout << "Elements :"; displayArray(arr, n); gerSurpassers(arr, surpassers, n); cout << "Surpassers:"; displayArray(surpassers, n); }
输出结果
Elements :2 7 5 3 0 8 1 Surpassers:4 1 1 1 2 0 0