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] 来实现这一点。如果为真,则计数器加 1。

让我们通过示例来理解。

输入

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 作为输入,并返回满足给定条件的三元组。

  • 使用三个循环遍历每个数组。

  • 最外层循环 0<=i<n 用于 a[],内部循环 0<=j<n 用于 b[],最内层循环 0<=k<n 用于 c[]。

  • 比较 a[i]<b[j] 和 b[j]<c[k] 是否为真。如果为真,则计数器加 1。

  • 在所有循环结束时,count 将包含满足 a[i]<b[j]<c[k] 的三元组。

  • 返回 count 作为结果。

示例

 在线演示

#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

更新于:2020年8月29日

346 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告