使用 C++ 统计元素个数,要求数组中值大于等于 X 的元素恰好有 X 个
给定一个整数数组。目标是找到满足以下条件的数组元素个数:
对于每个元素,数组中大于等于它的数字个数应与其自身的值完全相等。不包括该元素本身。如果元素为 X,则数组中恰好有 X 个数字大于或等于 X。(不包括该元素)。
输入
Arr[]= { 0,1,2,3,4,9,8 }输出
Elements exactly greater than equal to itself : 1
说明 - 元素和大于等于它的数字:
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 是唯一一个恰好有 3 个元素大于等于它的元素 (4, 8, 9)
输入
Arr[]= { 1,1,1,1,1 }输出
Elements exactly greater than equal to itself : 0
说明 - 所有元素都相等且计数不等于 1
下面程序中使用的算法如下:
整数数组 Arr[] 用于存储整数。
整数 ‘n’ 存储数组的长度。
函数 findcount(int arr[],int n) 以数组及其大小作为输入,并返回前面解释的类似 X 的数字的个数。
变量 count 用于存储类似 X 的数字的个数。
初始化 ans=0,它将统计此类数字。
使用 for 循环遍历数组,从第一个元素(索引=0)开始。
在 for 循环内再次从起始元素开始遍历,如果任何 arr[j]>=arr[j] 且 i!=j,则递增计数。
在 j 循环结束后,将 count 与 arr[i] 进行比较。如果 count==arr[i](恰好有 arr[i] 个元素 >=arr[i]),则递增答案 ‘ans’
两个 for 循环结束后,返回 ‘ans’ 中的结果。
示例
#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;
}输出
Elements exactly greater than equal to itself : 1
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP