কম্পিউটার

C++ এ প্রদত্ত যোগফল সহ সমস্ত জোড়া প্রিন্ট করুন


এই সমস্যায়, আমাদেরকে পূর্ণসংখ্যার একটি অ্যারে এবং একটি পূর্ণসংখ্যার যোগফল দেওয়া হয়েছে এবং আমাদের সমস্ত জোড়া পূর্ণসংখ্যা প্রিন্ট করতে হবে যার যোগফল যোগফলের মানের সমান৷

সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক :

ইনপুট −৷ অ্যারে ={1, 6, -2, 3} যোগফল =4

আউটপুট - (1, 3), (6, -2)

এখানে, প্রদত্ত যোগফলের মান সহ আমাদের জোড়া দরকার।

সমস্যার একটি সহজ সমাধান হল যোগফল তৈরি করে এমন উপাদানগুলির জোড়া পরীক্ষা করা। এটি অ্যারে ট্র্যাভার্স করে করা যেতে পারে এবং অ্যারেতে সংখ্যাটি খুঁজে বের করতে পারে যা যোগফলের মান পর্যন্ত হয়৷

উদাহরণ

এই প্রোগ্রামটি সমাধানটি ব্যাখ্যা করবে −

#include <iostream>
using namespace std;
int printPairsWithSum(int arr[], int n, int sum){
   int count = 0;
   for (int i = 0; i < n; i++)
      for (int j = i + 1; j < n; j++)
         if (arr[i] + arr[j] == sum)
            cout<<"[ "<<arr[i]<<", "<<arr[j]<<" ]\n";
}
int main(){
   int arr[] = {1, 6, -2, 3};
   int n = 4;
   int sum = 4;
   cout<<"Pairs with Sum "<<sum<<" are :\n";
   printPairsWithSum(arr, n, sum);
   return 0;
}

আউটপুট

Pairs with Sum 4 are :
[ 1, 3 ]
[ 6, -2 ]

এই পদ্ধতিটি বোঝা সহজ কিন্তু বেশ কার্যকর নয়। আরেকটি উপায় হ্যাশিং ব্যবহার করা হবে।

আমরা একটি হ্যাশ টেবিল শুরু করব এবং অ্যারে ট্র্যাভার্স এবং এটি জোড়া খুঁজে. ম্যাচ হলে, আমরা অ্যারে প্রিন্ট করব :

উদাহরণ

নিম্নলিখিত প্রোগ্রামটি আপনাকে অ্যালগরিদম আরও ভালভাবে বুঝতে সাহায্য করবে −

#include <bits/stdc++.h>
using namespace std;
void printPairsWithSum(int arr[], int n, int sum){
   unordered_map<int, int> pair;
   for (int i = 0; i < n; i++) {
      int rem = sum - arr[i];
      if (pair.find(rem) != pair.end()) {
         int count = pair[rem];
         for (int j = 0; j < count; j++)
         cout<<"["<<rem<<", "<<arr[i]<<" ]\n";
      }
      pair[arr[i]]++;
   }
}
int main(){
   int arr[] = {1, 6, -2, 3};
   int n = 4;
   int sum = 4;
   cout<<"The pair with sum is \n";
   printPairsWithSum(arr, n, sum);
   return 0;
}

আউটপুট

Pairs with Sum 4 are :
[ 1, 3 ]
[ 6, -2 ]

  1. C++ এ সর্বাধিক সংখ্যক বার হওয়া সমস্ত যোগফল প্রিন্ট করুন

  2. C++ এ প্রদত্ত যোগফল সহ সমস্ত ট্রিপলেট প্রিন্ট করুন

  3. একটি প্রদত্ত স্ট্রিং এর সমস্ত সাবস্ট্রিং C++ এ প্রিন্ট করার জন্য প্রোগ্রাম

  4. C++ এ একটি প্রদত্ত পরিসরে সমস্ত প্যালিনড্রোম প্রিন্ট করার জন্য প্রোগ্রাম