เราได้รับอาร์เรย์ของการเรียงสับเปลี่ยนของจำนวนธรรมชาติ 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