📌  相关文章
📜  给定总和的四元组计数

📅  最后修改于: 2021-04-23 20:55:32             🧑  作者: Mango

给定四个包含整数元素和整数和的数组,任务是对四元组进行计数,以便从不同的数组中选择每个元素,并且所有四个元素的和等于给定的和。

例子:

方法:生成所有可能的四元组并计算每个四元组的总和。计算所有这些四元组的总和等于给定的总和。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function to return the count of the required quadruplets
int countQuadruplets(int arr1[], int n1, int arr2[], int n2,
                     int arr3[], int n3, int arr4[], int n4, int sum)
{
  
    // To store the count of required quadruplets
    int cnt = 0;
  
    // For arr1[]
    for (int i = 0; i < n1; i++) {
  
        // For arr2[]
        for (int j = 0; j < n2; j++) {
  
            // For arr3[]
            for (int k = 0; k < n3; k++) {
  
                // For arr4[]
                for (int l = 0; l < n4; l++) {
  
                    // If current quadruplet has the required sum
                    if (arr1[i] + arr2[j] + arr3[k] + arr4[l] == sum) {
                        cnt++;
                    }
                }
            }
        }
    }
  
    return cnt;
}
  
// Driver code
int main()
{
  
    int arr1[] = { 0, 2 };
    int arr2[] = { -1, -2 };
    int arr3[] = { 2, 1 };
    int arr4[] = { 2, -1 };
    int sum = 0;
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
    int n2 = sizeof(arr2) / sizeof(arr2[0]);
    int n3 = sizeof(arr3) / sizeof(arr3[0]);
    int n4 = sizeof(arr4) / sizeof(arr4[0]);
  
    cout << countQuadruplets(arr1, n1, arr2, n2, arr3, n3, arr4, n4, sum);
  
    return 0;
}


Java
// Java program to implement
// the above approach
  
class GFG 
{
      
// Function to return the count of the required quadruplets
static int countQuadruplets(int arr1[], int n1, int arr2[], int n2,
                    int arr3[], int n3, int arr4[], int n4, int sum)
{
  
    // To store the count of required quadruplets
    int cnt = 0;
  
    // For arr1[]
    for (int i = 0; i < n1; i++)
    {
  
        // For arr2[]
        for (int j = 0; j < n2; j++)
        {
  
            // For arr3[]
            for (int k = 0; k < n3; k++) 
            {
  
                // For arr4[]
                for (int l = 0; l < n4; l++) 
                {
  
                    // If current quadruplet has the required sum
                    if (arr1[i] + arr2[j] + arr3[k] + arr4[l] == sum)
                    {
                        cnt++;
                    }
                }
            }
        }
    }
  
    return cnt;
}
  
// Driver code
public static void main(String[] args)
{
    int arr1[] = { 0, 2 };
    int arr2[] = { -1, -2 };
    int arr3[] = { 2, 1 };
    int arr4[] = { 2, -1 };
    int sum = 0;
    int n1 = arr1.length;
    int n2 = arr2.length;
    int n3 = arr3.length;
    int n4 = arr4.length;
    System.out.println(countQuadruplets(arr1, n1, arr2, n2,
                                    arr3, n3, arr4, n4, sum));
  
}
}
  
// This code contributed by Rajput-Ji


Python3
# Python implementation of the approach
  
# Function to return the count of the required quadruplets
def countQuadruplets(P, Q, R, S, sum):
      
    # To store the count of required quadruplets
    cnt = 0
      
    # Using four loops generate all possible quadruplets
    for elem1 in P:
        for elem2 in Q:
            for elem3 in R:
                for elem4 in S:
                    if elem1 + elem2 + elem3 + elem4 == sum:
                        cnt = cnt + 1
    return cnt
  
# Driver code
P = [ 0, 2]
Q = [-1, -2]
R = [2, 1]
S = [ 2, -1]
sum = 0
  
print(countQuadruplets(P, Q, R, S, sum))


C#
// C# program to implement
// the above approach
using System;
  
class GFG
{
  
// Function to return the count of the required quadruplets
static int countQuadruplets(int []arr1, int n1, int []arr2, int n2,
                    int []arr3, int n3, int []arr4, int n4, int sum)
{
  
    // To store the count of required quadruplets
    int cnt = 0;
  
    // For arr1[]
    for (int i = 0; i < n1; i++)
    {
  
        // For arr2[]
        for (int j = 0; j < n2; j++)
        {
  
            // For arr3[]
            for (int k = 0; k < n3; k++) 
            {
  
                // For arr4[]
                for (int l = 0; l < n4; l++) 
                {
  
                    // If current quadruplet has the required sum
                    if (arr1[i] + arr2[j] + arr3[k] + arr4[l] == sum)
                    {
                        cnt++;
                    }
                }
            }
        }
    }
  
    return cnt;
}
  
// Driver code
static public void Main ()
{
      
    int []arr1 = { 0, 2 };
    int []arr2 = { -1, -2 };
    int []arr3 = { 2, 1 };
    int []arr4 = { 2, -1 };
    int sum = 0;
    int n1 = arr1.Length;
    int n2 = arr2.Length;
    int n3 = arr3.Length;
    int n4 = arr4.Length;
    Console.WriteLine(countQuadruplets(arr1, n1, arr2, n2,
                                    arr3, n3, arr4, n4, sum));
  
}
}
  
// This code contributed by akt_mit


PHP


输出:
2

时间复杂度: O(n 4 )
空间复杂度: O(1)