Giả sử một mảng A được cho trước. Chúng ta phải tìm một số phần tử vượt trội của mỗi phần tử trong mảng đó. Phần tử vượt qua là phần tử lớn hơn nằm ở phía bên phải của mảng của phần tử hiện tại. Giả sử A ={2, 7, 5, 3, 0, 8, 1}, các số vượt qua là {4, 1, 1, 1, 2, 0, 0}, do đó 2 có 4 số ở bên phải lớn hơn hơn 4 và quy tắc tương tự cho những người khác. Giải pháp rất đơn giản, hai vòng lặp lồng nhau sẽ ở đó, đối với mỗi phần tử, nó sẽ đếm các phần tử vượt, sau đó lưu trữ chúng vào một mảng khác.
Ví dụ
#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);
} Đầu ra
Elements :2 7 5 3 0 8 1 Surpassers:4 1 1 1 2 0 0