可以添加到C ++中的集合的最大差异元素

根据问题,我们得到一个集合arr [n],其中n是集合中整数元素的数量,任务是找到要添加到集合中的元素的最大差元素。换句话说,差异应为| ab |的形式 其中“ a”和“ b”都在集合中,并且它们之间的差异不应最小。因此,我们将计算一个集合中最大且不同的最大数量。让我们借助示例了解问题及其解决方案。

输入-设置= {1,5}

输出-可以添加到集合中的最大差异元素为:1

说明-集合中只有1差异,即| 1-5 | = 4

输入-设置= {2,7,1,9}

输出-最大差异

可以添加到集合中的元素是:5

说明-集合中的差异如下-

|2-7| = 5
|7-1| = 6
|1-9| = 8
|2-9| = 7
|7-9| = 2

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

  • 取一个整数数组arr [n]来存储集合的值。

  • 在功能上,maximum()按照步骤3至6进行操作。

  • 声明元素ele,temp,val并将其值设置为等于arr [0]

  • 从1开始循环i,直到数组大小增加1步。

    • 找到数组中所有元素的gcd。

    • 将temp设置为temp或arr [i]之间的最大值。

  • 将total设置为temp / val,将max设置为total和size之差。

  • 返回并打印最大

示例

#include <bits/stdc++.h>
using namespace std;
//查找最大差异元素的功能
int maximum(int arr[], int size){
   int ele = arr[0];
   int val = ele;
   int temp = ele;
   for (int i = 1; i < size; i++){
      val = __gcd(val, arr[i]);
      temp = max(temp, arr[i]);
   }
   int total = temp / val;
   int max = total - size;
   return max;
}
int main(){
   int arr[] = { 2, 7, 1, 9};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Maximum difference elements that can added to a set is: "<<maximum(arr, size);
   return 0;
}

输出结果

如果运行上面的代码,我们将获得以下输出-

Maximum difference elements that can added to a set is: 5