কম্পিউটার

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


পূর্ণসংখ্যার মান ধারণকারী একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকা দেওয়া হয়েছে। লক্ষ্য হল ট্রিপলেটগুলি খুঁজে বের করা যার গুণফল প্রদত্ত মানের x এর সমান। যদি ইনপুট লিঙ্কযুক্ত তালিকা 3−4−1−2 হয় এবং x 6 হয় তাহলে গণনা হবে 1 (ত্রিপল (3,1,2) )

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

উদাহরণস্বরূপ

ইনপুট

linked list: [ 3−4−13−5−10−10−0 ] x=20

আউটপুট

Count of triplets in a sorted doubly linked list whose product is equal to a given
value x are: 2

ব্যাখ্যা

Triplets will be:
( 3,4,13 ) and ( 10,10,0 )

ইনপুট

linked list: [ 4−3−1−5−2−4−2 ] x=8

আউটপুট

Count of triplets in a sorted doubly linked list whose product is equal to a given
value x are: 6

ব্যাখ্যা

Triplets will be:
( 4,3,1), (1,5,2), (3,1,4), (1,5,2), (4,2,2) and (2,4,2),

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

এই পদ্ধতিতে।

  • আমরা একটি লিঙ্কড লিস্ট নোডকে স্ট্রাকট হিসেবে নিচ্ছি যাতে int ডেটা অংশ এবং সেলফ-রেফারেন্সিয়াল পরবর্তী এবং আগের পয়েন্টার রয়েছে।

  • ফাংশন insert_node(struct block** head, int data) ডেটার সাথে লিঙ্ক করা তালিকার মাথায় নোড যোগ করে।

  • ফাংশন Product_x(struct block* head, int x) পয়েন্টারটিকে দ্বিগুণ লিঙ্কযুক্ত তালিকা এবং পূর্ণসংখ্যা x এর মাথায় নিয়ে যায় এবং x হিসাবে ডেটা অংশের পণ্য সহ নোডের ট্রিপলেটের গণনা প্রদান করে।

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

  • স্ট্রাকট ব্লকের তিনটি পয়েন্টার temp_1, temp_2 এবং temp_3 ধরুন।

  • temp_1 থেকে শুরু করে লিঙ্ক করা তালিকার মাথার দিকে নির্দেশ করে, temp_2 temp_1 এর পরের দিকে নির্দেশ করে এবং temp_3 temp_3 এর পরের দিকে নির্দেশ করে, আমাদের তিনটি পয়েন্টার রয়েছে যা প্রথম তিনটি নোডের দিকে নির্দেশ করে৷

  • শেষ নোড পর্যন্ত এই পয়েন্টারগুলি ব্যবহার করে অতিক্রম করুন৷

  • যদি উপরের সমস্ত পয়েন্টারের বর্তমান ডেটা অংশে x হিসাবে পণ্য থাকে। ((temp_1−>data + temp_2−>data + temp_3−>data) ==x) তারপর ইনক্রিমেন্ট কাউন্ট।

  • শেষে আমরা ট্রিপলেটের সংখ্যা গণনা করেছি এবং গণনায় সংরক্ষণ করেছি।

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

উদাহরণ

#include <iostream>
using namespace std;
struct block{
   int data;
   struct block *next, *prev;
};
void insert_node(struct block** head, int data){
   struct block* ptr = new block();
   ptr−>data = data;
   ptr−>next = NULL;
   ptr−>prev = NULL;
   if ((*head) == NULL){
      (*head) = ptr;
   } else {
      ptr−>next = *head;
      (*head)−>prev = ptr;
      (*head) = ptr;
   }
}
int sum_x(struct block* head, int x){
   int count = 0;
   struct block *temp_1, *temp_2, *temp_3;
   for (temp_1 = head; temp_1!= NULL; temp_1 = temp_1−>next){
      for (temp_2 = temp_1−>next; temp_2 != NULL; temp_2 = temp_2−>next){
         for (temp_3 = temp_2−>next; temp_3!= NULL; temp_3 = temp_3−>next){
            if ((temp_1−>data + temp_2−>data + temp_3−>data) == x){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   struct block* head = NULL;
   insert_node(&head, 200);
   insert_node(&head, 100);
   insert_node(&head, 16);
   insert_node(&head, 14);
   insert_node(&head, 10);
   insert_node(&head, 10);
   insert_node(&head, 2);
   int x = 22;
   cout<<"Count of triplets in a sorted doubly linked list whose sum is equal to a given value x
   are: "<<sum_x(head, x);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of triplets in a sorted doubly linked list whose sum is equal to a given value x are: 1

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

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

  3. C++ এ সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণন গণনা করুন

  4. C++ এ লিঙ্ক করা তালিকার বিকল্প নোডের যোগফল