给定一个整数数组Arr []以及两个变量a和b来定义范围[a,b]。目的是找到三和的总数在此范围[a,b]之间。
我们将通过使用三个for循环来做到这一点。如果arr [i] + arr [j] + arr [k]> = a并且arr [i] + arr [j] + arr [k] <= b,则增加计数。其中0 <= i <= n-2,i <j <n-1,j <k <n。其中n为否。Arr []中的元素集合。
让我们通过示例来理解。
输入− arr [] = {1,2,3,4,5},N = 5,L = 2,R = 8
输出-三胞胎数量-4
说明-
Triplets with sum>=2 and sum<=8 (1,2,3) → 6 (1,2,4) → 7 (1,2,5) → 8 (1,3,4) → 8 Total triplets: 4
输入− arr [] = {2,2,2,2,2},N = 5,L = 2,R = 5
输出-三胞胎数量-0
说明-
每个三元组的总和为6。这不在[2,5]范围内
三胞胎总数:0
我们采用用随机数初始化的整数数组Arr []。
取变量L和R来定义范围[L,R]。N存储Arr []的长度。
函数countTriplets(int arr [],int n,int a,int b)接受一个数组,将其长度和范围变量作为输入,并返回其和在此范围内的三元组。
将三元组的数量的初始变量计数设为0。
将初始变量和作为每个三元组的总和。最初为0。
对三元组的每个元素使用三个for循环遍历数组。
最外层循环从0 <= i <n-2,内层循环i <j <n-1,最内层j <k <n。
计算sum = arr [i] + arr [j] + arr [k]。如果a <= sum <= b,则增加计数。
在所有循环结束时,计数将具有满足条件的三元组总数。
返回计数作为所需结果。
#include <bits/stdc++.h> using namespace std; int countTriplets(int arr[],int n,int a,int b){ int count = 0; int sum=0; 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++){ sum=arr[i]+arr[j]+arr[k]; if ( sum>=a && sum<=b) //check{ count++; // cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print } } } } return count; } int main(){ int Arr[]={ 5,4,3,6,8,2 }; int L=9; int R=15; int N=6; //length of array cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N,L,R); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Number of triplets : 14