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
廣告