এই সমস্যায়, আমাদের Q প্রশ্ন দেওয়া হয়। এগুলি তিন প্রকার, তারা হল −
-
প্রশ্ন 1:তালিকায় N নম্বর যোগ করুন।
-
প্রশ্ন 2:তালিকা থেকে N নম্বর সরান।
-
প্রশ্ন 3:তালিকার সর্বনিম্ন এবং সর্বোচ্চ উপাদানের পার্থক্য ফেরত দিন।
আমাদের কাজ হল C++ এ সর্বাধিক এবং সর্বনিম্ন পার্থক্য যোগ, অপসারণ এবং ফেরত দেওয়ার জন্য প্রশ্নের সমাধান করার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যা বর্ণনা
আমাদের একটি Q নম্বর দেওয়া হবে যা আমরা তালিকায় সম্পাদন করব। তালিকার সর্বোচ্চ এবং সর্বনিম্ন উপাদানের পার্থক্য যোগ, অপসারণ এবং খুঁজে বের করার জন্য 3 ধরনের প্রশ্ন রয়েছে। যা ব্যবহার করে আমরা প্রথমে উপাদানগুলির তালিকা তৈরি করব এবং তারপর তালিকার সর্বাধিক এবং সর্বনিম্ন উপাদানগুলির মধ্যে পার্থক্যের ক্যোয়ারী 3 মানটি খুঁজে বের করব৷
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট :Q =6
প্রশ্ন (1, 4)
প্রশ্ন (1, 9)
প্রশ্ন (1, 6)
প্রশ্ন (2, 4)
প্রশ্ন (1, 3)
প্রশ্ন (3)
আউটপুট :৬
ব্যাখ্যা
শেষ পর্যন্ত, তালিকাটি হবে {9, 6, 3}৷
৷সর্বাধিক -> 9
সর্বনিম্ন -> 3
পার্থক্য -> 6
সমাধান পদ্ধতি
সমস্যা সমাধানের একটি সহজ পদ্ধতি হল প্রতিটি প্রশ্নের সরাসরি সমাধান ব্যবহার করা। এই ধাপগুলি অনুসরণ করে−
-
একটি অ্যারে শুরু করুন৷
৷ -
ক্যোয়ারী টাইপ 1 এর জন্য, অ্যারেতে একটি উপাদান যোগ করুন
-
প্রশ্ন টাইপ 2 এর জন্য, অ্যারে থেকে একটি উপাদান সরান
-
ক্যোয়ারী টাইপ 3 এর জন্য, সর্বাধিক এবং সর্বনিম্ন মধ্যে পার্থক্য খুঁজুন এবং মানটি ফেরত দিন।
উদাহরণ
#include <iostream> using namespace std; void solveQuerry(int type, int item){ int list[100]; static int index = 0; if(type == 1){ list[index] = item; index++; } else if(type == 2){ for(int i = 0; i <= index; i++) if(list[i] == item ){ list[i] = 0; break; } } else if(type == 3){ int max = -100, min = 100; for(int i = 0; i< index; i++){ if(list[i] == 0) i++; if(list[i] > max) max = list[i]; if(list[i] < min) min = list[i]; } cout<<"The difference between the maximum and minimum elements of the list is "<<(max - min); } } int main() { int Q = 6; int query[Q][2] = {{1, 5}, {1, 9}, {1, 6}, {2, 4}, {1, 3}, {3, 0}}; for(int i = 0; i< Q; i++){ solveQuerry(query[i][0], query[i][1]); } }
আউটপুট
The difference between the maximum and minimum elements of the list is 6
অনুসন্ধান প্রক্রিয়া আরও কার্যকর হতে পারে যদি আমরা অন্যান্য ডেটা স্ট্রাকচার ব্যবহার করি তবে একটি সাধারণ অ্যারে। এখানে, যদি আমরা অ্যারের পরিবর্তে সেলফ-ব্যালেন্সিং বাইনারি সার্চ ট্রি ব্যবহার করি। সর্বাধিক উপাদানটি শেষে থাকবে (rbegin() পদ্ধতি ব্যবহার করে অ্যাক্সেস করা হবে)। এবং সর্বনিম্ন উপাদানটি শুরুতে থাকবে (begin() পদ্ধতি ব্যবহার করে অ্যাক্সেস করা হবে।
C++-এ সেলফ-ব্যালেন্সিং বাইনারি সার্চ ট্রির বাস্তবায়ন সেট ব্যবহার করে করা হয়।
উদাহরণ
#include <bits/stdc++.h> using namespace std; set<int> myList; void solveQuerry(int type, int num){ if(type == 1){ myList.insert(num); } else if(type == 2){ myList.erase(num); } else if(type == 3){ int max = *(myList.rbegin()); int min = *(myList.begin()); cout<<"The difference between the maximum and minimum elements of the list is "<<(max - min); } } int main() { int Q = 6; int query[Q][2] = {{1, 5}, {1, 9}, {1, 6}, {2, 4}, {1, 3}, {3, 0}}; for(int i = 0; i< Q; i++){ solveQuerry(query[i][0], query[i][1]); } }
আউটপুট
The difference between the maximum and minimum elements of the list is 6