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

นับคู่ดัชนีที่ตรงตามเงื่อนไขที่กำหนดใน C++


เราได้รับอาร์เรย์ของการเรียงสับเปลี่ยนของจำนวนธรรมชาติ N ตัวแรก เป้าหมายที่นี่คือการค้นหาคู่ดัชนีขององค์ประกอบที่ตรงตามเงื่อนไขที่กล่าวถึงด้านล่าง -

หากอาร์เรย์คือ Arr[] ดังนั้น i,j คือดัชนี ให้นับคู่ขององค์ประกอบที่ Arr[i]+Arr[j]=max(Arr[x])เช่นว่า i<=x<=j.

นั่นคือ ผลรวมของ Arr[i] และ A[j] เท่ากับองค์ประกอบสูงสุดที่เกิดขึ้นระหว่างสองส่วนนี้

อินพุต

Arr[]= { 2,4,1,3,6,5 }

ผลลัพธ์

Count of index pairs which satisfy the given condition:1

คำอธิบาย − ให้ผลรวมของคู่ −

2+4=6, 6 คือค่าสูงสุดแต่ไม่ระหว่าง 2 ถึง 4

2+1=3, 3 ไม่อยู่ระหว่าง 2 ถึง 1 และสูงสุดระหว่างพวกเขาคือ 4

2+3=5, 5 ไม่อยู่ระหว่าง 2 ถึง 3 และสูงสุดระหว่างพวกเขาคือ 4

2+6=8, 8 ไม่อยู่ระหว่าง 2 ถึง 6 และสูงสุดระหว่างพวกเขาคือ 4

ในทำนองเดียวกัน

1+5=6, 6 อยู่ระหว่าง 1 ถึง 5 และสูงสุดระหว่างพวกเขาคือ 6

จากทั้งหมดมีเพียง 1 คู่ที่ตรงตามเงื่อนไข

อินพุต

Arr[]= { 1,2,5,4,3 }

ผลลัพธ์

Count of index pairs which satisfy the given condition:2

คำอธิบาย − ให้ผลรวมของคู่ −

1+5=6, 6 คือค่าสูงสุดแต่ไม่อยู่ระหว่าง 1 ถึง 5

1+4=5, 5 อยู่ระหว่าง 1 ถึง 4 และค่าสูงสุดระหว่างพวกเขาคือ 5

2+3=5, 5 อยู่ระหว่าง 2 ถึง 3 และค่าสูงสุดระหว่างพวกเขาคือ 5

1+3=4, 4 อยู่ระหว่าง 1 ถึง 3 แต่ค่าสูงสุดระหว่างพวกเขาคือ 5

จากทั้งหมด 2 คู่ เป็นไปตามเงื่อนไข

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • Integer array Arr[] เก็บตัวเลขและขนาดความยาว

  • ฟังก์ชัน countPairs(int A[],int n) รับอาร์เรย์และขนาด n เป็นอินพุตและส่งกลับจำนวนคู่ที่ตรงตามเงื่อนไขข้างต้น..

  • การนับตัวแปรใช้เพื่อเก็บค่าเริ่มต้น 0 สำหรับคู่ดังกล่าว

  • เริ่มต้น max1 ด้วยองค์ประกอบแรกและดัชนีใน maxindex เป็น 0 เพื่อเก็บค่าและดัชนีของค่าสูงสุดที่พบจนถึงตอนนี้

  • เริ่มสำรวจอาร์เรย์โดยใช้ for loop

  • ภายในซ้อนกันสำหรับลูปหากได้รับ A[j]>=max1 จากนั้นอัปเดต max1 และดัชนีด้วย j.

  • สำหรับแต่ละคู่ของ A[i] และ A[j] หากผลรวมเท่ากับ max1 และดัชนี maxindex อยู่ระหว่าง iand j ให้นับการเพิ่มขึ้นตามเงื่อนไข

  • หลังจากสิ้นสุดการวนซ้ำทั้งสองจะส่งคืนผลลัพธ์ที่มีอยู่ในการนับ

ตัวอย่าง

// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
// Function to return the count of
// required index pairs
int countPairs(int A[], int n){
   // To store the required count
   int count = 0;
   int i,j,k;
   int max1=A[0];
   int maxindex=0;
   for ( i = 0; i<n-1; i++){
      for(j=i+1;j<n;j++){
         if(A[j]>=max1){
             max1=A[j];
            maxindex=j;
      }
      if(A[i]+A[j]==max1 && maxindex>=i && maxindex<=j)
         count++;
      }
   }
   // Return count of subsegments
   return count;
}
int main(){
   int Arr[] = {3, 4, 6, 1, 5, 2};
   int size =6;
   cout <<endl<<"Count of index pairs which satisfy the given condition:"
   <<countPairs(Arr,size);
   return 0;
}

ผลลัพธ์

Count of index pairs which satisfy the given condition:1