从C ++中具有相同数字总和的两个数组计算不重复对

我们给了两个具有整数值的数组,比如arr_1 []和arr_2 [],任务是计算具有相同数字总和的不同对的计数。这意味着应从arr_1 []中选择一个值,并从arr_2 []中选择第二个值以形成一对,并且两个值应具有相同的总和数。

数组是一种数据结构,可以存储相同类型的元素的固定大小的顺序集合。数组用于存储数据集合,但是将数组视为相同类型的变量集合通常会更有用。

例如

Input − int arr_1[] = {1, 22, 42, 17}

   Int arr_2[] = {1, 31, 6, 8}Output − count is 4

说明-总共有4对具有相同的数字总和,分别是(1、1),(22、31),(42、6)和(17、8)。

Input − int arr_1[] = {1, 22, 42, 17}

   Int arr_2[] = {2, 78, 6, 18}Output − count is 1

说明-总共只有一对具有相同的数字总和,即(42,6)。

Input − int arr_1[] = {1, 22, 42, 17}

   Int arr_2[] = {2, 78, 16, 18}Output − count is 0

说明-没有对具有相同的数字总和,因此count为0。

以下程序中使用的方法如下-

  • 创建两个数组,假设是arr_1 []和arr_2 []

  • 使用该length()函数计算两个数组的长度,该函数将根据数组中的元素返回一个整数值。

  • 创建一个set类型变量,假设st

  • 我的启动循环为0,并且我小于arr_1 []的大小

  • 在循环内部,启动另一个循环,将j设为0,且j小于arr_2 []的大小。

  • 检查Sum(arr [i])= sum(arr_2 [j]),然后检查arr_1 [i]小于arr_2 [j],然后插入(make_pair(arr_1 [i],arr_2 [j])

  • 否则,插入(make_pair(arr_2 [j],arr_1 [i])。

  • 返回st.size()

  • 打印结果。

示例

#include <iostream>

#include <set>

using namespace std;

//查找功能

//数字的总和

int sumdigits(int n){

   int sum = 0;

   while (n > 0){

      sum += n % 10;

      n = n / 10;

   }

   return sum;

}

//函数计算对数

int paircount(int arr_1[], int arr_2[], int size1, int size2){

   //设置用于避免重复对

   set<pair<int, int> > myset;

   for (int i = 0; i < size1; i++){

      for (int j = 0; j < size2; j++){

         //检查数字总和

         //两个元素中的

         if (sumdigits(arr_1[i]) == sumdigits(arr_2[j])){

            if (arr_1[i] < arr_2[j]){

               myset.insert(make_pair(arr_1[i], arr_2[j]));

            } else{

               myset.insert(make_pair(arr_2[j], arr_1[i]));

            }

         }

      }

   }

   //集合的返回大小

   return myset.size();

}

//驱动程式码

int main(){

   int arr_1[] = { 1, 22, 42, 17 };

   int arr_2[] = { 5, 31, 6, 8 };

   int size1 = sizeof(arr_1) / sizeof(arr_1[0]);

   int size2 = sizeof(arr_2) / sizeof(arr_2[0]);

   cout <<"count is "<<paircount(arr_1, arr_2, size1, size2);

   return 0;

}

输出结果

如果运行上面的代码,我们将得到以下输出&miuns;。

count is 3

以上是 从C ++中具有相同数字总和的两个数组计算不重复对 的全部内容, 来源链接: utcz.com/z/326665.html

回到顶部