C++ 中陣列中元素相等的索引對計數


給定一個包含 N 個元素的陣列。目標是找到索引對 (i,j),它們具有相同的元素值,且 i!=j。即,Arr[i]=Arr[j] 且 i!=j。這用於配對相同尺寸的手套。在 N 副手套中,只有配對的手套才能出售。

我們將透過執行兩個迴圈來做到這一點,其中 0<=i<n-1 和 i<j<n。比較每一對 (i,j) 是否 Arr[i]==Arr[j] && Arr[i]>0 && Arr[j]>0,以及 i!=j。如果為真,則增加此類對的計數,並將這些元素設為 -1 ( Arr[i]=Arr[j]= -1) 以將其從進一步檢查中移除,因為沒有手套可以有 -1 的尺寸。

讓我們透過示例來理解。

輸入 − Arr[]= { 4,3,2,1,2,4 } N=6

輸出 − 元素相等的索引對計數 − 2

解釋

count=0, Arr[]= [ 4,3,2,1,2,4 ]
Arr[0]=Arr[5], 0!=5, count=1 Arr[0]=Arr[5]=-1 → [ -1,3,2,1,2,-1 ]
Arr[2]=Arr[4], 2!=4, count=2 Arr[2]=Arr[4]=-1 → [ -1,3,-1,1,-1,-1 ]
Now array has no new pairs with equal values, i!=j and > -1. Total pairs=2

輸入 − Arr[]= { 2,2,2,2,2 } N=5

輸出 − 元素相等的索引對計數 − 2

解釋

count=0, Arr[]= [ 2,2,2,2,2 ]
Arr[0]=Arr[1], 0!=1, count=1 Arr[0]=Arr[1]=-1 → [ -1,-1,2,2,2 ]
Arr[2]=Arr[3], 2!=3, count=2 Arr[2]=Arr[3]=-1 → [ -1,-1,-1,-1,2 ]
Now array has no new pairs with equal values, i!=j and > -1. Total pairs=2

下面程式中使用的方案如下

  • 我們使用一個整數陣列 Arr[],並用隨機數初始化,表示手套的尺寸 > 0。

  • 使用一個變數 n 儲存 Arr[] 的長度。

  • 函式 countPairs(int arr[], int n) 以陣列及其長度作為輸入,並返回具有相同尺寸和不同索引的對。

  • 使用兩個 for 迴圈遍歷陣列,以獲取每一對的每個元素。

  • 外部迴圈從 0<=i<n-1 開始,內部迴圈 i<j<n

  • 檢查 arr[i] 和 arr[j] 是否為正數。如果 arr[i]==arr[j],則遞增計數。(根據迴圈中設定的條件,i 永遠不會等於 j,無需比較)。

  • 現在將 arr[i]=arr[j]=-1,以將其從進一步的比較中移除。

  • 在所有迴圈結束時,count 將包含手套對的總數。

  • 將 count 作為結果返回。

示例

 現場演示

// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
// Function to count equal elements to make pair of gloves
int countPairs(int arr[], int n){
   int count = 0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]==arr[j] && arr[i]>0 && arr[j]>0){
            count++;
            arr[i]=arr[j]=-1;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1,2,4,2,1,2,4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<"Pair of gloves ( Equal element pairs ):"<<countPairs(arr, n);
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Pair of gloves ( Equal element pairs ):3.

更新於: 2020-08-29

387 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.