从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