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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.