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

说明 − 没有哪一对具有相同的数字和,因此计数为0。

下面程序中使用的方法如下:

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

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

  • 创建一个集合类型变量,假设为st。

  • 开始循环,i从0开始,i小于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;
// Function to find the
// sum of digits of a number
int sumdigits(int n){
   int sum = 0;
   while (n > 0){
      sum += n % 10;
      n = n / 10;
   }
   return sum;
}
//function to count the number of pairs
int paircount(int arr_1[], int arr_2[], int size1, int size2){
   // set is used to avoid duplicate pairs
   set<pair<int, int> > myset;
   for (int i = 0; i < size1; i++){
      for (int j = 0; j < size2; j++){
         // check sum of digits
         // of both the elements
         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 size of the set
   return myset.size();
}
// Driver code
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;
}

输出

如果我们运行上面的代码,我们将得到以下输出:

count is 3

更新于:2020年5月15日

180次浏览

开启您的职业生涯

完成课程后获得认证

开始学习
广告