计算在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=4Pair 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=2Pair 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