在C ++中与所有其他元素的和的绝对差大于k的元素数

我们得到了一个整数数组。目的是对数字进行计数,以使所有元素之和与该元素之和的绝对差大于变量k。

我们将通过获取数组元素的总和来实现。现在对于每个元素arr [i],检查是否-

sum-2(arr [i])> k,因为sum已包含arr [i],因此将其减去两次。如果为真,则递增计数。

让我们通过示例来理解。

输入− arr [] = {1,2,3,0,3,2,0,1},k = 10

输出-元素数:2

说明-元素总数为12

12-1-1 = 10、12-2-2 = 8、12-3-3 = 6、12-0-0 = 12。

只有12> 10,所以对于2个元素(0s),条件为true。

输入− arr [] = {1,1,1,1,1} k = 10

输出-元素数:0

说明-元素总数为5

对于每个1 5-1-1 = 3 <10。

以下程序中使用的方法如下

  • 我们采用以随机数初始化的整数数组arr []。

  • 函数numberCount(int arr [],int n,int k)以数组及其长度为输入,并返回与所有其他元素之和的绝对差大于k的元素的计数

  • 将初始计数设为0。

  • 计算数组所有元素的总和。

  • 现在从i = 0到i <n遍历整个数组。

  • 对于每个元素arr [i],如果sum-arr [i] -arr [i]> k,则递增计数。

  • 循环结束时返回计数作为最终结果。

示例

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int numberCount(int arr[],int n, int k){
   int count=0;
   int sum=0;
   int i;
   for(i=0;i<n;i++)
      { sum+=arr[i]; }
   for(int i=0;i<n;i++){
      if( abs(sum-arr[i]-arr[i]) > k ){
         count++;
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,3,4 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   int K=5;
   cout<<endl<<"Count of elements: "<<numberCount(Arr,len,K);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of elements: 2