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


根据题目,我们得到一个集合arr[n],其中n是集合中整数元素的数量,任务是找到需要相加才能得到集合中元素的最大差值元素。换句话说,差值应为|a-b|的形式,其中'a'和'b'都属于集合,且它们的差值不应是最小的。因此,我们将计算集合中不同的且最大的差值的数量。让我们通过一个例子来了解问题及其解决方案。

输入 − 集合 = {1, 5}

输出 − 可添加到集合的最大差值元素为: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]

  • 循环i从1到数组大小,步长为1。

    • 求数组中所有元素的最大公约数。

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

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

  • 返回并打印max。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
//function to find maximum difference element
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

更新于:2020年8月14日

81 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告