计算三元组,以便在C ++中A [i]
给定三个数组A[],B[]和C[]。目的是找到这些数组的所有三元组,使得A[i]<B[j]<C[k]。这三个数组的元素数均为N。我们将遍历每个数组一次,然后比较A[i]<B[j]&&B[j]<C[k]。如果为真,则递增计数。
让我们通过示例来理解。
输入-
A[]={1,4,5 } B = { 0,2,3 } C = { 0,6,7 }
输出-三元组数-4
说明-
Triplets such that A[i]<B[j]<C[k] (1,2,6) , (1,2,7) , (1,3,6) , (1,3,7). Total 4 triplets.
输入值
A[]={7,8,9} B = { 4,5,6 } C = { 1,2,3 }
输出-三重计数:0
说明-
No Triplets that satisfy A[i]<B[j]<C[k]
以下程序中使用的方法如下
我们采用由随机数初始化的等长整数数组A[],B[]和C[]。
取变量N来存储它们的长度。
函数countTriplets(inta[],intb[],intc[],intn)将所有三个数组以相同的长度n作为输入,并返回满足给定条件的三元组。
每个数组使用三个循环的遍历。
a[]的最外层循环0<=i<n,b[]的最内层循环0<=j<n,c[]的最内层循环0<=k<n。
比较a[i]<b[j]和b[j]<c[k]。如果为真,则递增计数。
在所有循环的末尾,count将具有三元组,使得a[i]<b[j]<c[k]。
返回计数作为结果。
示例
#include <bits/stdc++.h> using namespace std; int countTriplets(int a[],int b[],int c[], int n){ int count = 0; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ for (int k = 0; k < n; k++){ if(a[i]<b[j] && b[j]<c[k]) { count++; } } } } return count; } int main(){ int A[]={ 1,2,3}; int B[]={ 2,3,2}; int C[]={ 4,3,1}; int N=3; //length of array cout <<endl<< "Number of triplets : "<<countTriplets(A,B,C,N); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Number of triplets : 6