Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm phần tử sao cho có đúng X phần tử có giá trị lớn hơn hoặc bằng X trong C ++

Chúng tôi được cung cấp với một mảng các số nguyên. Mục đích là tìm số phần tử trong mảng thỏa mãn điều kiện sau -

Đối với mỗi phần tử, số lượng các số lớn hơn hoặc bằng nó có trong mảng phải chính xác bằng nó. Không bao gồm phần tử chính nó. Nếu phần tử là X thì mảng có đúng X các số lớn hơn hoặc bằng X. (Không bao gồm phần tử).

Đầu vào

Arr[]= { 0,1,2,3,4,9,8 }

Đầu ra

Elements exactly greater than equal to itself : 1

Giải thích - Các phần tử và số> =với nó -

Arr[0]: 6 elements are >= 0 , 6!=0 count=0
Arr[1]: 5 elements are >= 1 , 5!=1 count=0
Arr[2]: 4 elements are >= 2 , 4!=2 count=0
Arr[3]: 3 elements are >= 3 , 3==3 count=1
Arr[4]: 2 elements are >= 4 , 2!=4 count=1
Arr[4]: 0 elements are >= 9 , 0!=9 count=1
Arr[6]: 1 element is >= 8 , 1!=8 count=1

3 là phần tử duy nhất có đúng 3 phần tử> =với nó (4,8,9)

Đầu vào

Arr[]= { 1,1,1,1,1 }

Đầu ra

Elements exactly greater than equal to itself : 0

Giải thích - Tất cả các phần tử đều bằng nhau và được tính! =1

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Mảng số nguyên Arr [] được sử dụng để lưu trữ các số nguyên.

  • Số nguyên ‘n’ lưu trữ độ dài của mảng.

  • Hàm findcount (int arr [], int n) nhận một mảng và kích thước của nó làm đầu vào và trả về số đếm như X đã giải thích trước đó.

  • Số lượng biến được sử dụng để lưu trữ số lượng các số như X.

  • Khởi tạo ans =0, sẽ đếm các số như vậy.

  • Duyệt qua mảng bắt đầu từ phần tử đầu tiên (index =0) bằng vòng lặp for.

  • Bên trong vòng lặp for xem lại từ phần tử bắt đầu, nếu bất kỳ arr [j]> =arr [j] như vậy thati! =J, hãy tăng số lượng.

  • Sau khi kết thúc vòng lặp j, so sánh số đếm với arr [i]. Nếu count ==arr [i] (chính xác các phần tử arr [i] là> =arr [i], hãy tăng câu trả lời ‘ans’

  • Sau khi kết thúc cả hai vòng lặp for, trả về kết quả có trong ‘ans’.

Ví dụ

#include <iostream>
#include <algorithm>
using namespace std;
int findcount(int arr[],int n){
   sort(arr,arr+n);
   int count=0;
   int ans=0;
   for(int i=0;i<n;i++){
      count=0;
      for(int j=0;j<n;j++){
         if(arr[j]>=arr[i] && i!=j)
            count++;
      }
      if(count==arr[i])
         ans++;
   }
   return ans;
}
int main(){
   int Arr[]= { 0,1,2,3,4,5,6 };
   int k=7;
   int n=sizeof(Arr)/sizeof(Arr[0]);
   std::cout<<"Elements exactly greater than equal to itself : "<<findcount(Arr,n);
   return 0;
}

Đầu ra

Elements exactly greater than equal to itself : 1