C++中滿足給定條件的陣列有效對的計數


給定一個包含 N 個元素的陣列 arr[]。目標是找到所有滿足某些條件的有效對 (Arr[i],Arr[j]) 的數量。

  • 如果滿足以下條件,則對 Arr[i],Arr[j] 無效:
  • Arr[i]==Arr[j]
  • Arr[i]+Arr[j] 為偶數

i+j<120

**注意** − Arr[i],Arr[j] 和 Arr[j],Arr[i] 將被計為一對。有效對具有 i!=j 讓我們透過示例來理解。

Arr[]= { 3,2,1,2,4,3 } N=4

輸入

Count of valid pairs: 2

輸出

解釋

Arr[0] & Arr[4] → (3,3) here Arr[i]==Arr[j] & 3+3 is even also i!=j and i+j<120
Arr[1] & Arr[3] → (2,2) here Arr[i]==Arr[j] & 2+2 is even also i!=j and i+j<120

**注意** − Arr[i],Arr[j] 和 Arr[j],Arr[i] 將被計為一對。有效對具有 i!=j 讓我們透過示例來理解。

Arr[]= { 1,2,3,4,5,6 } N=6

輸入

Count of valid pairs: 0

輸出

有效對為:

元素不重複。不存在 i!=j 且型別為 ( a,a ) 的對。

  • 下面程式中使用的方案如下
  • 我們使用隨機數初始化一個整數陣列 Arr[]。
  • 獲取一個變數 n,它儲存 Arr[] 的長度。
  • 函式 countPairs(int arr[], int n) 以陣列及其長度作為輸入,並返回有效且滿足所需條件的對。
  • 使用兩個 for 迴圈遍歷陣列以獲取每一對的每個元素。
  • 外迴圈從 0<=i<n-1 開始,內迴圈從 i<j<n 開始。
  • 計算 arr[i], arr[j] 的和 assum=(arr[i]+aar[j])。
  • 檢查對是否有效。比較 i!=j 和 sum%2==0 以及 i+j<120。
  • 現在檢查 arr[i]==arr[j]。遞增計數。
  • 在所有迴圈結束時,count 將包含有效對的總數。

返回 count 作為結果。

示例

#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   for(int i=0;i<n;i++){
      for(int j=i+1;j<n;j++) //j=i+1 we don't have to check i!=j{
         int sum=arr[i]+arr[j];
         //valid pairs have i!=j
         if( sum%2==0 && i+j<120){
            if( arr[i]==arr[j] ) //valid pair{
               count++;
               cout<<endl<<" a:"<<arr[i]<<"b: "<<arr[j];
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {1,2,3,2,4,1,4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<endl<<"Valid pairs in array:"<<countPairs(arr, n);
   return 0;
}

輸入

Valid pairs in array:
a:1b: 1
a:2b: 2
a:4b: 43

Sunidhi Bansal

更新於: 2020年9月16日

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告