用 C++ 统计形成最小乘积三元组的方法数
给定一个数字数组 Arr[]。目标是计算乘积等于所有可能的三元组的最小乘积的三元组的数量。如果 (i<j<k) 且 arr[i]*arr[j]*arr[k] 是可能的最小值,则计算三元组的数量。
我们将首先找到 (i<j<k) 时的最小乘积,并将其存储为 minprod。然后计算所有乘积等于 minprod 的三元组。
让我们通过示例来理解。
输入 − arr[]= { 1,2,3,2,4,1,5 }
输出 − 三元组数量 − 2
说明 −
Here minimum product is 2 Triplet 1[ 1,2,3,2,4,1,5 ] → (1,2,1) product=2 Triplet 2 [ 1,2,3,2,4,1,5 ] → (1,2,1) product=2 Number of triplets with product 2 which is minimum is 2.
输入 − arr[]= { 1,1,2,1,2,2 }
输出 − 三元组数量 − 1
说明 −
Here minimum product is 1 Triplet 1 [ 1,1,2,1,2,2 ] → (1,1,1) product=1 Number of triplets with product 1 which is minimum is 1.
下面程序中使用的步骤如下
我们使用随机数初始化一个整数数组 Arr[]。
使用一个变量 N 来存储 Arr[] 的长度。
函数 countTriplets(int arr[], int n) 以数组及其长度作为输入,并返回乘积等于最小乘积的三元组的数量。
将初始变量 count 设置为 0,表示三元组的数量。
将初始变量 prod 设置为每个三元组的乘积。初始值为 1。
将初始变量 minprod 设置为所有三元组的最小可能乘积。初始值为 999。
使用三个 for 循环遍历数组以获取每个三元组的元素。
最外层循环从 0<=i<n-2 开始,内层循环 i<j<n-1,最内层循环 j<k<n。
计算 prod=arr[i]*arr[j]*arr[k]。如果 prod<=minprod,则使用 prod 更新 minprod。
现在 minprod 存储了所有三元组的最小乘积值。
再次使用三个 for 循环遍历数组以获取每个三元组的元素。
最外层循环从 0<=i<n-2 开始,内层循环 i<j<n-1,最内层循环 j<k<n。
计算 prod=arr[i]*arr[j]*arr[k]。如果 prod==minprod,则递增 count。因为这个三元组具有最小乘积。
在所有循环结束后,count 将包含满足条件的三元组的总数。
返回 count 作为结果。
示例
#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[],int n){
int count = 0;
int prod=1;
int minprod=9999; //making minimum as larger than any product in array
for (int i = 0; i < n-2; i++){
for (int j = i+1; j < n-1; j++){
for (int k = j+1; k < n; k++){
prod=arr[i]*arr[j]*arr[k];
if ( prod<=minprod )
{ minprod=prod; }
}
}
}
// cout<<"minproduct :"<<minprod; //to print minimum product
for (int i = 0; i < n-2; i++){
for (int j = i+1; j < n-1; j++){
for (int k = j+1; k < n; k++){
prod=arr[i]*arr[j]*arr[k];
if ( prod==minprod ){
count++;
//cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print
}
}
}
}
return count;
}
int main(){
int Arr[]={ 1,2,3,1,2,6};
int N=5; //length of array
cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N);
return 0;
}输出
如果我们运行上述代码,它将生成以下输出:
Number of triplets : 2
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP