Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนคู่ดัชนีที่มีองค์ประกอบเท่ากันในอาร์เรย์ใน C++


เราได้รับอาร์เรย์ขององค์ประกอบ N เป้าหมายคือการหาคู่ดัชนี (i,j) ที่มีค่าองค์ประกอบเหมือนกันจนทำให้ i!=j. เช่น Arr[i]=Arr[j] และ i!=j ใช้ทำถุงมือที่มีขนาดเท่ากัน ถุงมือไม่มีเหลือ ถุงมือคู่เท่านั้นที่มีประโยชน์ในการขาย

เราจะทำสิ่งนี้โดยรันสองลูปด้วย 0<=i0 &&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) รับอาร์เรย์ความยาวเป็นอินพุตและส่งกลับคู่ที่มีขนาดเท่ากันและดัชนีต่างกัน

  • Traverse array ใช้ two for loops สำหรับแต่ละองค์ประกอบของคู่

  • วงนอกจาก 0<=i

  • ตรวจสอบว่า arr[i] และ arr[j] เป็นค่าบวกหรือไม่ ถ้า arr[i]==arr[j] ให้นับการเพิ่มขึ้น (ฉันจะไม่เท่ากับ j ตามเงื่อนไขที่กำหนดไว้ในลูป ไม่จำเป็นต้องเปรียบเทียบ )

  • ตอนนี้ตั้งค่า arr[i]=arr[j]=-1 เพื่อลบออกจากการเปรียบเทียบเพิ่มเติม

  • เมื่อสิ้นสุดลูปทั้งหมดจะนับจำนวนถุงมือทั้งหมด

  • คืนค่าการนับเป็นผลลัพธ์

ตัวอย่าง

// 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.