用 C++ 統計滿足條件的 (i, j) 對數:arr[i] 能被 arr[j] 整除 或 arr[j] 能被 arr[i] 整除。
給定一個包含 N 個元素的陣列 arr[]。目標是找到所有滿足條件的索引對 (i,j) 的數量,條件是 arr[i] 能被 arr[j] 整除 或 arr[j] 能被 arr[i] 整除,並且 i!=j。
我們將使用兩個 for 迴圈遍歷陣列 arr[] 中的每個數字對,並檢查當 i!=j 時,是否 arr[i]%arr[j]==0 或 arr[j]%arr[i]==0。如果是,則增加配對計數。
讓我們透過示例來理解。
輸入 − Arr[]= { 2,4,3,6 } N=4
輸出 − 有效對的數量 − 3
說明 − 有效對為 −
Arr[0] & Arr[1] → (2,4) here 4%2==0 0!=1 Arr[0] & Arr[1] → (2,6) here 6%2==0 0!=3 Arr[2] & Arr[3] → (3,6) here 6%3==0 2!=3
輸入 − Arr[]= { 2,5,7,9,11 } N=5
輸出− 有效對的數量 − 0
說明 − 沒有一個數能完全整除另一個數。無法形成任何對。
下面程式中使用的演算法如下:
我們使用一個用隨機數初始化的整型陣列 Arr[]。
使用變數 n 儲存 Arr[] 的長度。
函式 countPairs(int arr[], int n) 以陣列及其長度作為輸入,並返回滿足所需條件的有效對。
使用兩個 for 迴圈遍歷每個元素對。
外迴圈從 0<=i<n-1,內迴圈 i<j<n
檢查 arr[i]%arr[j]==0 或 arr[j]%arr[i]==0 是否成立。如果任一條件為真,則計數加一。
所有迴圈結束後,count 將包含有效對的總數。
返回計數作為結果。
示例
#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
// Count of pairs
int count = 0;
for (int i = 0; i < n-1; i++){
for (int j = i + 1; j < n; j++){
if(arr[i]%arr[j]==0 || arr[j]%arr[i]==0)
{ count++; }
}
}
return count;
}
int main(){
int Arr[] = { 2,3,4,5,6 };
int len = sizeof(Arr) / sizeof(Arr[0]);
cout << "Count of number of pairs : "<< countPairs(Arr, len);
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Count of number of pairs : 3
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP