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次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.