কম্পিউটার

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


আমাদের দুটি লিঙ্কযুক্ত তালিকা দেওয়া হয়েছে এবং কাজটি হল লিঙ্ক করা তালিকার পূর্ণসংখ্যা উপাদানগুলি ব্যবহার করে জোড়া তৈরি করা যাতে তাদের যোগফল একটি প্রদত্ত মানের সমান হয় যা বলা যাক, k। একটি লিঙ্ক করা তালিকা হল ডেটা স্ট্রাকচারের একটি ক্রম, যা লিঙ্কের মাধ্যমে একসাথে সংযুক্ত থাকে।

ইনপুট

vector v_1 = {5, 7, 8, 10, 11},.
vector v_2 = {6, 4, 3, 2, 0} , int k = 11

আউটপুট

Count of pairs from two linked lists whose sum is equal to a given value k are: 4

ব্যাখ্যা

The pairs which can be formed using the given linked lists are: (5, 6) = 11(equals to k), (5, 4) = 9(not equals to k), (5, 3) = 8(not equals to k), (5, 2) = 7(not equals to k), (5, 0) = 5(not equals to k), (7, 6) = 13(not equals to k), (7, 4) = 11(equals to k), (7, 3) = 10(not equals to k), (7, 2) = 9(not equals to k), (7, 0) = 7(not equals to k), (8, 6) = 14(not equals to k), (8, 4) = 12(not equals to k), (8, 3) = 11(equals to k), (8, 2) = 10(not equals to k), (8, 0) = 8(not equals to k), (10, 6) = 16(not equals to k), (10, 4) = 14(not equals to k), (10, 3) = 13(not equals to k), (10, 2) = 12(not equals to k), (10, 0) = 10(not equals to k), (11, 6) = 17(not equals to k), (11, 4) = 15(not equals to k), (11, 3) = 14(not equals to k), (11, 2) = 13(not equals to k), (11, 0) = 11(not equals to k). So, clearly there are 3 pairs which are equal to the given sum.

ইনপুট

vector v_1 = {2, 3, 5, 6},.
vector v_2 = {6, 4, 3} , int k = 6

আউটপুট

Count of pairs from two linked lists whose sum is equal to a given value k are: 2

ব্যাখ্যা

The pairs which can be formed using the given linked lists are: (2, 6) = 8(not equals to k), (2, 4) = 6(equals to k), (2, 3) = 5(not equals to k), (3, 6) = 9(not equals to k), (3, 4) = 7(not equals to k), (3, 3) = 6(equals to k), (5, 6) = 11(not equals to k), (5, 4) = 9(not equals to k), (5, 3) = 8(not equals to k), (6, 6) = 12(not equals to k), (6, 4) = 10(not equals to k), (6, 3) = 9(not equals to k),. So, clearly there are 2 pairs which are equal to the given sum.

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

  • k এবং পূর্ণসংখ্যার মান দুটি ভেক্টরে ইনপুট করুন যাতে আমরা একটি লিঙ্কযুক্ত তালিকা তৈরি করতে ভেক্টরগুলিকে পাস করতে পারি

  • একটি ফাংশন তৈরি করুন যা ফাংশনে একটি আর্গুমেন্ট হিসাবে পাস করা ভেক্টর ব্যবহার করে একটি লিঙ্কযুক্ত তালিকা তৈরি করবে৷

  • একটি ভেক্টরের আকার পর্যন্ত লুপটি অতিক্রম করুন এবং ক্লাসের একটি পয়েন্টার অবজেক্ট তৈরি করুন

    লিস্টনোড

    • লুপটি অতিক্রম করুন যখন ptr-> পরবর্তী NULL এর সমান না হয় এবং ptr-এ ptr->পরবর্তী

      সেট করুন
    • ptr->পরবর্তী সেট ভেক্টর[i]

      এর ভিতরে
    • রিটার্ন শুরু

  • একটি ফাংশন তৈরি করুন যা প্রদত্ত যোগফলের সাথে মিলিত জোড়ার সংখ্যা ফেরত দেবে।

    • একটি অস্থায়ী পরিবর্তনশীল গণনা নিন এবং এটি 0

      এ সেট করুন
    • দুটি পয়েন্টার অবজেক্ট তৈরি করুন যেমন প্রথম লিঙ্ক করা তালিকার জন্য *first_list এবং দ্বিতীয় লিঙ্ক করা তালিকার জন্য *second_list।

    • প্রথম তালিকার স্টার্ট পয়েন্টার থেকে স্টার্ট লুপ যতক্ষণ না তালিকা খালি হয়

    • লুপের ভিতরে, তালিকা খালি না হওয়া পর্যন্ত দ্বিতীয় তালিকার স্টার্ট পয়েন্টার থেকে আরেকটি লুপ শুরু করুন

    • লুপের ভিতরে, IF চেক করুন (first_list->data + second_list->data) ==k তারপর গণনা 1 দ্বারা বৃদ্ধি করুন

    • গণনা ফেরত দিন

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
class ListNode{
public:
   int data;
   ListNode *next;
   ListNode(int data){
      this->data = data;
      next = NULL;
   }
};
ListNode *CreateList(vector v){
   ListNode *start = new ListNode(v[0]);
   for (int i = 1; i < v.size(); i++){
      ListNode *ptr = start;
      while (ptr->next != NULL){
         ptr = ptr->next;
      }
      ptr->next = new ListNode(v[i]);
   }
   return start;
}
int sum_pair(ListNode *start_1, ListNode *start_2, int k){
   int count = 0;
   ListNode *first_list , *second_list;
   for (first_list = start_1; first_list != NULL; first_list = first_list->next){
      for (second_list = start_2; second_list != NULL; second_list = second_list->next){
         if ((first_list->data + second_list->data) == k){
            count++;
         }
      }
   }
   return count;
}
int main(){
   vector<int> v_1 = {5, 7, 8, 10, 11};
   ListNode* start_1 = CreateList(v_1);
   vector v_2 = {6, 4, 3, 2, 0};
   ListNode* start_2 = CreateList(v_2);
   int k = 11;
   cout<<"Count of pairs from two linked lists whose sum is equal to a given value k are: "<<sum_pair(start_1, start_2, k);
}

আউটপুট

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

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

  1. C++ এ একটি প্রদত্ত মান x পর্যন্ত যোগ করা সাবট্রি গণনা করুন

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

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

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