计算在C ++中选择差异最大的一对的方法

我们给了一个数字数组Arr []。目的是计算其差等于所有可能对的最大差的对的数量。计数对(i!= j)和arr [x] -arr [y]是最大可能的。

我们将通过首先找到最大差值(i!= j)来做到这一点。并存储为maxdiff。然后计算所有具有差分= maxdiff的对。

让我们通过示例来理解。

输入− arr [] = {1,2,3,2,4,1,5}

输出-选择最大差值对的方式数量-2

说明-

Here minimum no. is 1 and maximum number is 5, maximum difference =5-1=4
Pair 1 [ 1,2,3,2,4,1,5 ] → (1,5) difference=4
Pair 2 [ 1,2,3,2,4,1,5 ] → (1,5) difference=4
Number of pairs with difference which is maximum=2.

输入− arr [] = {2,4,2,4}

输出-选择最大差值对的方式数量-4

说明-

Here minimum no. is 2 and maximum number is 4, maximum difference =4-2=2
Pair 1 [ 2,4,2,4 ] → (2,4) difference=2
Pair 2 [ 2,4,2,4 ] → (2,4) difference=2
Pair 3 [ 2,4,2,4 ] → (4,2) difference=2
Pair 4 [ 2,4,2,4 ] → (2,4) difference=2
Number of pairs with difference which is maximum=4.

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

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

  • 取一个变量N,它存储Arr []的长度。

  • 函数countPairs(int arr [],int n)接受一个数组,将其长度作为输入,并返回选择差值等于最大差值的对的方式。

  • 将初始变量计数设为0,以获取路数。

  • 将变量diff作为每对的差。

  • 将maxdiff变量作为所有对的最大差。

  • 从数组中找到最大值和最小值,分别存储在maxx和mini中

  • 现在maxdiff将是maxx-mini。

  • 对数组中的每个元素使用两个for循环遍历数组。

  • 外循环从0 <= i <n-1,内循环i <j <n

  • 分别计算diff = arr [i] -arr [j]或arr [j] -arr [i]计数。如果diff == maxdiff增量计数,因为这对具有最大差异。

  • 在所有循环结束时,计数将具有满足条件的对总数。

  • 返回计数结果。

示例

#include <bits/stdc++.h>
using namespace std;
int countWays(int arr[],int n){
   int count = 0;
   int diff;
   int maxdiff=0; //making minimum as larger than any product in array
   int mini,maxx;
   mini=maxx=arr[0];
   for (int i = 0; i < n; i++) //find minimum and maximum values{
      if(arr[i]<mini)
         {mini=arr[i];}
      if(arr[i]>maxx)
         { maxx=arr[i]; }
   }
   maxdiff=maxx-mini; //this is maximum difference
   //cout<<maxx<<" "<<mini;
   for (int i = 0; i < n-1; i++){
      for (int j = i+1; j < n; j++){
         diff=arr[i]-arr[j]; //pair 1
         if ( diff==maxdiff ){
            count++;
            //cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print
         }
         diff=arr[j]-arr[i]; //pair 2
         if ( diff==maxdiff ){
            count++;
            //cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 3, 2, 1, 1, 3 };
   int N=5; //length of array
   cout <<endl<< "No. of ways of choosing pair with maximum difference : "<<countWays(Arr,N);
   return 0;
}

输出结果

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

No. of ways of choosing pair with maximum difference : 4