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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP