পূর্ণসংখ্যার মান ধারণকারী একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকা দেওয়া হয়েছে। লক্ষ্য হল ট্রিপলেটগুলি খুঁজে বের করা যার গুণফল প্রদত্ত মানের x এর সমান। যদি ইনপুট লিঙ্কযুক্ত তালিকা হয় 3−4−1−2 এবং x হয় 6 তাহলে গণনা হবে 1 (ট্রিপলেট (3,1,2))
উদাহরণস্বরূপ
ইনপুট
৷linked list: [ 200−4−16−5−10−10−2 ] x=200
আউটপুট
Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 3
ব্যাখ্যা
Triplets will be: (4,5,10), (4,5,10) and (10,10,2)
ইনপুট
linked list: [ 4−3−1−5−2−4−2] x=12
আউটপুট
Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 3
ব্যাখ্যা
Triplets will be: (4,3,1), (3,1,4) and (3,2,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−>ডেটা * temp_2−>ডেটা * temp_3−>ডেটা) ==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 Product_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 = 200; cout<<"Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: "<<Product_x(head, x); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of triplets in a sorted doubly linked list whose product is equal to a given value x are : 1