计算在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

以上是 计算在C ++中选择差异最大的一对的方法 的全部内容, 来源链接: utcz.com/z/330946.html

回到顶部