Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหา Surpasser Count ของแต่ละองค์ประกอบในอาร์เรย์ใน C++


สมมุติว่าให้อาร์เรย์ A หนึ่งอัน เราต้องหาจำนวนที่เหนือกว่าของแต่ละองค์ประกอบในอาร์เรย์นั้น ผู้เหนือกว่าคือองค์ประกอบที่มากกว่าซึ่งมีอยู่ทางด้านขวาของอาร์เรย์ขององค์ประกอบปัจจุบัน สมมติว่า A ={2, 7, 5, 3, 0, 8, 1} ผู้เหนือกว่าคือ {4, 1, 1, 1, 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