কম্পিউটার টিউটোরিয়াল

সি++-এ শর্ত সন্তুষ্টকারী বৈধ পেয়ার গণনা

একটি অ্যারে 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

আউটপুট: বৈধ পেয়ার সংখ্যা: ২

ব্যাখ্যা: বৈধ পেয়ার: Arr[0] & Arr[4] → (3,3) এখানে Arr[i]==Arr[j] & 3+3 জোড় ও i!=j এবং i+j<120। Arr[1] & Arr[3] → (2,2) এখানেও একই শর্ত।

ইনপুট: Arr[] = { 1,2,3,4,5,6 }, N=6

আউটপুট: বৈধ পেয়ার সংখ্যা: ০

ব্যাখ্যা: কোনো উপাদান রিপিট নেই। i!=j থাকা (a,a) টাইপ পেয়ার সম্ভব নয়।

অ্যাপ্রোচ

  • ইন্টিজার অ্যারে Arr[] নেওয়া হয়।
  • n ভেরিয়েবলে দৈর্ঘ্য।
  • countPairs(int arr[], int n) ফাংশন অ্যারে এবং দৈর্ঘ্য গ্রহণ করে বৈধ পেয়ার রিটার্ন করে।
  • দুটি নেস্টেড for লুপ: আউটার 0<=i
  • sum = arr[i]+arr[j]। বৈধ পেয়ারের শর্ত: i!=j এবং sum%2==0 এবং i+j<120।
  • এখন arr[i]==arr[j] চেক করে count বাড়ানো হয়।

উদাহরণ কোড

#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++) {
            int sum = arr[i] + arr[j];
            if (sum % 2 == 0 && i + j < 120) {
                if (arr[i] == arr[j]) {
                    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: 4 3
  1. C++-এ গ্রিডের মধ্যে নির্দিষ্ট দিকচালনের সম্ভাব্য মোভ সংখ্যা গণনা

  2. C++-এ দেওয়া XOR সমান হয় এমন জোড়া (Pair) গণনা

  3. C++-এ K বিটে আলাদা হয় এমন অ্যারে জোড়া গণনা

  4. C++-এ রোটেটেড সোর্টেড অ্যারেতে রোটেশন কাউন্ট বের করা