เราได้รับอาเรย์จำนวนเต็ม เป้าหมายคือนับสมาชิกที่ทำให้เงื่อนไข: สำหรับสมาชิก X จำนวนตัวเลขในอาเรย์ที่ >= X (ไม่นับตัวมันเอง) ต้องเท่ากับ X อย่างแน่นอน
อินพุต
Arr[] = {0, 1, 2, 3, 4, 9, 8}
เอาต์พุต
Elements exactly greater than equal to itself: 1
คำอธิบาย − Arr[3]=3 มีตัวเลข >=3 ทั้งหมด 3 ตัว (4,8,9) นับได้ 1
อินพุต
Arr[] = {1, 1, 1, 1, 1}
เอาต์พุต
Elements exactly greater than equal to itself: 0
คำอธิบาย − ทุกตัวเท่ากัน จำนวน >=1 คือ 4 ไม่เท่ากับ 1
วิธีการที่ใช้ในโปรแกรมด้านล่าง
- อาเรย์ Arr[] และ n
- ฟังก์ชัน findcount(int arr[], int n) คืนค่าจำนวนสมาชิกที่ตรงเงื่อนไข
- เรียงอาเรย์ก่อน (sort)
- ลูป i=0..n-1 นับ count = จำนวน arr[j] >= arr[i] โดย j != i
- ถ้า count == arr[i] เพิ่ม ans
- คืนค่า ans
ตัวอย่างโค้ด
#include <iostream>
#include <algorithm>
using namespace std;
int findcount(int arr[], int n) {
sort(arr, arr + n);
int ans = 0;
for (int i = 0; i < n; i++) {
int 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 n = sizeof(Arr) / sizeof(Arr[0]);
cout << "Elements exactly greater than equal to itself: " << findcount(Arr, n);
return 0;
}
ผลลัพธ์
Elements exactly greater than equal to itself: 1