কম্পিউটার

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


আমাদেরকে ধনাত্মক সংখ্যা এবং একটি মান x সম্বলিত দুটি অ্যারে দেওয়া হয়েছে। লক্ষ্য হল অ্যারের উপাদানগুলির জোড়া খুঁজে বের করা, যাতে জোড়ার ধরন (A, B) এর A+B=x থাকে এবং A প্রথম অ্যারের এবং B দ্বিতীয় অ্যারের অন্তর্গত।

আসুন উদাহরণ দিয়ে বুঝতে পারি

ইনপুট − arr_1[] ={1,2,5,3,4}; arr_2[] ={7,0,1,3}; x=6

আউটপুট −দুটি সাজানো অ্যারে থেকে জোড়ার সংখ্যা যার যোগফল একটি প্রদত্ত মানের x এর সমান - 2

ব্যাখ্যা − জোড়া হল (5,1) - (arr_1[2],arr_2[2]) এবং (3,3) - (arr_1[3],arr_2[3])

ইনপুট − arr_1[] ={1,1,1}; arr_2[] ={2,2}; x=6

আউটপুট − দুটি সাজানো অ্যারে থেকে জোড়ার সংখ্যা যার যোগফল একটি প্রদত্ত মানের x এর সমান - 2

ব্যাখ্যা − জোড়া হল (1,2) - (arr_1[0],arr_2[0]) এবং (1,2) - (arr_1[1],arr_2[1])

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

আমরা দুটি পন্থা ব্যবহার করব। লুপের জন্য একটি ব্যবহার করে প্রথম নিরীহ পদ্ধতি। লুপগুলির জন্য উভয়ই ট্র্যাভার্সিং শুরু করুন যেমন সূচক i arr_1[] এর জন্য এবং সূচী j হল arr_2[] এর জন্য। জোড়ার জন্য (arr_1[i]+arr_2[j]==x), বৃদ্ধির সংখ্যা। ফলাফল হিসাবে রিটার্ন গণনা।

  • একটি পূর্ণসংখ্যার অ্যারে নিন arr_1[] এবং arr_2[] সাইজ_arr_1 এবং size_arr_2 হিসাবে ধনাত্মক উপাদান এবং দৈর্ঘ্য সহ।

  • ফাংশন Pair_value_x(int ​​arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x) উভয় অ্যারে এবং তাদের দৈর্ঘ্য নেয় এবং জোড়াগুলিকে এমনভাবে প্রদান করে যাতে উপাদানগুলির যোগফল হয় x৷

  • গণনার প্রাথমিক মান 0 হিসাবে নিন।

  • arr_1[] i=0 থেকে i যাত্রা শুরু করুন

  • প্রতিটি জোড়ার জন্য arr_1[i], arr_2[j], যোগফল x কিনা তা পরীক্ষা করুন। সত্য হলে, সংখ্যা বৃদ্ধি করুন।

  • ফলাফল হিসাবে রিটার্ন গণনা।

দক্ষ পদ্ধতি

এই পদ্ধতিতে আমরা arr_1 এর উপাদানগুলির একটি unordered_set তৈরি করব। এখন লুপের জন্য এবং প্রতিটি মানের arr_2[i] ব্যবহার করে arr_2 ট্র্যাভার্স করুন, যদি x-arr_2[i] সেটে পাওয়া যায় তাহলে ইনক্রিমেন্ট কাউন্ট। শেষে গণনা ফেরত দিন।

  • একই অ্যারে এবং তাদের মাপ নিন।

  • ফাংশন Pair_value_x(int ​​arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x) উভয় অ্যারে এবং তাদের দৈর্ঘ্য নেয় এবং জোড়াগুলিকে এমনভাবে প্রদান করে যাতে উপাদানগুলির যোগফল হয় x৷

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • arr_1 এর অনন্য উপাদান সংরক্ষণের জন্য unordered_set হ্যাশ_ম্যাপ তৈরি করুন।

  • লুপ ব্যবহার করে arr_1 এর উপাদানগুলির সাথে হ্যাশ_ম্যাপ তৈরি করুন।

  • এখন লুপ ব্যবহার করে arr_2[] ট্র্যাভার্স করুন।

  • প্রতিটি arr-2[j] এর জন্য, যদি x-arr_2[j] হ্যাশ_ম্যাপে (hash_map.find(x - arr_2[j]) !=hash_map.end()) ব্যবহার করে পাওয়া যায়, তাহলে সংখ্যা বৃদ্ধি করুন।

  • শেষে যোগফল x সমান সহ জোড়া হিসাবে গণনা করুন।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ (নিষ্পাপ পদ্ধতি)

#include <bits/stdc++.h>
using namespace std;
int Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x){
   int count = 0;
   for (int i = 0; i < size_arr_1; i++){
      for (int j = 0; j < size_arr_2; j++){
         if ((arr_1[i] + arr_2[j]) == x){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr_1[] = {1, 2, 3, 4};
   int arr_2[] = {2, 3, 4, 5};
   int size_arr_1 = sizeof(arr_1) / sizeof(arr_1[0]);
   int size_arr_2 = sizeof(arr_2) / sizeof(arr_2[0]);
   int x = 6;
   cout<<"Count of pairs from two sorted arrays whose sum is equal to a given value x are: "<<
Pair_value_x(arr_1, arr_2, size_arr_1 , size_arr_2, x);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of pairs from two sorted arrays whose sum is equal to a given value x are: 4

উদাহরণ (দক্ষ পদ্ধতি)

#include <bits/stdc++.h>
using namespace std;
int Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x){
   int count = 0;
   unordered_set<int> hash_map;
   for (int i = 0; i < size_arr_1; i++){
      hash_map.insert(arr_1[i]);
   }
   for (int j = 0; j < size_arr_2; j++){
      if (hash_map.find(x - arr_2[j]) != hash_map.end()){
         count++;
      }
   }
   return count;
}
int main(){
   int arr_1[] = {1, 2, 3, 4};
   int arr_2[] = {2, 3, 4, 5};
   int size_arr_1 = sizeof(arr_1) / sizeof(arr_1[0]);
   int size_arr_2 = sizeof(arr_2) / sizeof(arr_2[0]);
   int x = 6;
   cout<<"Count of pairs from two sorted arrays whose sum is equal to a given value x are: "<< Pair_value_x(arr_1, arr_2, size_arr_1 , size_arr_2, x);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of pairs from two sorted arrays whose sum is equal to a given value x are: 4

  1. একটি বাইনারি গাছে জোড়া গণনা করুন যার যোগফল C++ এ একটি প্রদত্ত মানের x এর সমান

  2. একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকায় ট্রিপলেট গণনা করুন যার যোগফল C++ এ একটি প্রদত্ত মানের x এর সমান।

  3. একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকায় ট্রিপলেট গণনা করুন যার পণ্য C++ এ একটি প্রদত্ত মানের x সমান।

  4. দুটি BST থেকে জোড়া গণনা করুন যার যোগফল C++ এ একটি প্রদত্ত মানের x এর সমান