计算三元组,以便在C ++中A [i] <B [j] <C [k]

给定三个数组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(int a [],int b [],int c [],int n)将所有三个数组以相同的长度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
猜你喜欢