เราได้รับอาร์เรย์ arr[] ขององค์ประกอบ N เป้าหมายคือการหาจำนวนคู่ที่ถูกต้องทั้งหมด (Arr[i],Arr[j]) ที่เป็นไปตามเงื่อนไขบางประการ คู่ Arr[i],Arr[j] ไม่ถูกต้องหาก −
- Arr[i]==Arr[j]
- Arr[i]+Arr[j] เท่ากัน
- i+j<120
หมายเหตุ − Arr[i],Arr[j] และ Arr[j],Arr[i] จะถูกนับเป็นหนึ่งคู่ คู่ที่ถูกต้องมี i!=j มาทำความเข้าใจกับตัวอย่างกัน
อินพุต
Arr[]= { 3,2,1,2,4,3 } N=4
ผลลัพธ์
Count of valid pairs: 2
คำอธิบาย
คู่ที่ถูกต้องคือ −
Arr[0] & Arr[4] → (3,3) here Arr[i]==Arr[j] & 3+3 is even also i!=j and i+j<120 Arr[1] & Arr[3] → (2,2) here Arr[i]==Arr[j] & 2+2 is even also i!=j and i+j<120
อินพุต
Arr[]= { 1,2,3,4,5,6 } N=6
ผลลัพธ์
Count of valid pairs: 0
คำอธิบาย
ไม่มีการซ้ำซ้อนขององค์ประกอบ ไม่มีประเภทคู่ ( a,a ) ที่เป็นไปได้โดยที่ i!=j.
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
- เราใช้อาร์เรย์จำนวนเต็ม Arr[] ที่เริ่มต้นด้วยตัวเลขสุ่ม
- หาตัวแปร n ซึ่งเก็บความยาวของ Arr[].
- Function countPairs(int arr[], int n) รับอาร์เรย์ความยาวเป็นอินพุตและส่งกลับคู่ที่ถูกต้องและตรงตามเงื่อนไขที่ต้องการ
- อาร์เรย์การเคลื่อนที่โดยใช้สองลูปสำหรับแต่ละองค์ประกอบของคู่
- วงนอกจาก 0<=i
- คำนวณผลรวมของ arr[i], arr[j] assum=(arr[i]+aar[j])
- เพื่อตรวจสอบว่าคู่นั้นถูกต้องหรือไม่ เปรียบเทียบว่า i!=j และ sum%2==0 ยัง i+j<120
- ตรวจสอบดูว่า arr[i]==arr[j] หรือไม่ จำนวนที่เพิ่มขึ้น
- เมื่อสิ้นสุดการวนซ้ำทั้งหมดจะมีจำนวนคู่ที่ถูกต้องทั้งหมด
- คืนค่าการนับตามผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int countPairs(int arr[], int n){ int count=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++) //j=i+1 we don't have to check i!=j{ int sum=arr[i]+arr[j]; //valid pairs have i!=j if( sum%2==0 && i+j<120){ if( arr[i]==arr[j] ) //valid pair{ count++; cout<<endl<<" a:"<<arr[i]<<"b: "<<arr[j]; } } } } return count; } int main(){ int arr[] = {1,2,3,2,4,1,4 }; int n = sizeof(arr) / sizeof(arr[0]); cout <<endl<<"Valid pairs in array:"<<countPairs(arr, n); return 0; }
ผลลัพธ์
Valid pairs in array: a:1b: 1 a:2b: 2 a:4b: 43