我们给了两个具有整数值的数组,比如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