用 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