কম্পিউটার

C++ প্রোগ্রাম বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে সর্বাধিক সাবয়ারের যোগফল খুঁজে বের করতে


বাইনারি অনুসন্ধান হল একটি দ্রুত অনুসন্ধান অ্যালগরিদম যার রান-টাইম জটিলতা Ο(log n)। এই অনুসন্ধান অ্যালগরিদম বিভাজন এবং জয় নীতিতে কাজ করে। এই অ্যালগরিদমটি সঠিকভাবে কাজ করার জন্য, ডেটা সংগ্রহটি সাজানো আকারে হওয়া উচিত।

বাইনারি অনুসন্ধান সংগ্রহের মধ্যম আইটেম তুলনা করে একটি নির্দিষ্ট আইটেম সন্ধান করে। যদি একটি মিল ঘটে, তাহলে আইটেমের সূচী ফেরত দেওয়া হয়। যদি মাঝের আইটেমটি আইটেমের থেকে বড় হয়, তাহলে আইটেমটি মধ্যবর্তী আইটেমের বাম দিকে সাব-অ্যারেতে অনুসন্ধান করা হয়। অন্যথায়, আইটেমটি মাঝের আইটেমের ডানদিকে সাব-অ্যারেতে অনুসন্ধান করা হয়। এই প্রক্রিয়াটি সাব-অ্যারেতেও চলতে থাকে যতক্ষণ না সাব-অ্যারের আকার শূন্যে নেমে আসে।

এটি হল বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে সর্বাধিক সাবয়ারের যোগফল খুঁজে বের করার প্রোগ্রাম৷

অ্যালগরিদম

সর্বাধিক দুটি পূর্ণসংখ্যা খুঁজে পেতে একটি পূর্ণসংখ্যা ফাংশন সর্বাধিক() ঘোষণা করা শুরু করুন। পূর্ণসংখ্যা ডেটাটাইপে val1, val2 ঘোষণা করুন। প্যারামিটার হিসাবে তাদের পাস. val1 এবং val2 এর মধ্যে সর্বোচ্চ পরীক্ষা করুন। সর্বাধিক মান ফেরত দিন। শেষ শুরু করুন একটি পূর্ণসংখ্যা ফাংশন MCS() ঘোষণা করুন সর্বাধিক যোগফল সাব-অ্যারে খুঁজে পেতে যার মধ্যে সাব-অ্যারের মাধ্যম রয়েছে। পূর্ণসংখ্যা ডেটাটাইপে একটি অ্যারে অ্যারে [] এবং ভেরিয়েবল l, m, h ঘোষণা করুন। প্যারামিটার হিসাবে তাদের পাস. পূর্ণসংখ্যা ডেটাটাইপে পরিবর্তনশীল s, sum_of_left_part ঘোষণা করুন। s =0 আরম্ভ করুন। sum_of_left_part =-1 শুরু করুন। জন্য (int i =m; i>=l; i--) s =s + array[i]। যদি (s> sum_of_left_part) তাহলে sum_of_left_part =s। s =0 পূর্ণসংখ্যা ডেটাটাইপে পরিবর্তনশীল sum_of_right_part ঘোষণা করুন। sum_of_right_part =-1 শুরু করুন। জন্য (int i =m+1; i <=h; i++) s =s + array[i]। যদি (s> sum_of_right_part) তাহলে sum_of_right_part =s। ফিরুন sum_of_left_part + sum_of_right_part. EndBegin একটি পূর্ণসংখ্যা ফাংশন ঘোষণা করুন MaximumSum_of_SubArray()। পূর্ণসংখ্যা ডেটাটাইপে একটি অ্যারে অ্যারে [] এবং ভেরিয়েবল l, h ঘোষণা করুন। প্যারামিটার হিসাবে তাদের পাস. পূর্ণসংখ্যা ডেটাটাইপে m ঘোষণা করুন। if (l ==h) তারপর অ্যারে [l] ফেরত দিন। m =(l + h)/2; সর্বোচ্চ ফেরত দিন পূর্ণসংখ্যা ডেটাটাইপে number_of_elements এবং i ঘোষণা করুন। "অ্যারের উপাদানের সংখ্যা লিখুন:" প্রিন্ট করুন। number_of_elements এর মান লিখুন। পূর্ণসংখ্যা ডেটাটাইপে একটি অ্যারে একটি [number_of_elements] ঘোষণা করুন। for(i =0; i

উদাহরণ

#includeনেমস্পেস ব্যবহার করে std;int ম্যাক্সিমাম(int val1, int val2) // সর্বোচ্চ দুইটি পূর্ণসংখ্যা খুঁজে বের করুন { রিটার্ন (val1> val2)? val1:val2;}int MCS(int array[], int l, int m, int h) // সর্বাধিক যোগফল সাব-অ্যারে খুঁজুন যার মধ্যে সাব-অ্যারের মাধ্যম রয়েছে। { int s =0; int sum_of_left_part =-1; জন্য (int i =m; i>=l; i--) { s =s + array[i]; যদি (s> sum_of_left_part) sum_of_left_part =s; } s =0; int sum_of_right_part =-1; জন্য (int i =m+1; i <=h; i++) { s =s + array[i]; যদি (s> sum_of_right_part) sum_of_right_part =s; } sum_of_left_part + sum_of_right_part ফেরত; // মাধ্যমের বাম এবং ডানদিকে উপাদানের যোগফল ফেরত দিন। int MaximumSum_of_SubArray(int array[], int l, int h) { int m; যদি (l ==h) অ্যারে [l] ফেরত দেয়; m =(l + h)/2; সর্বোচ্চ ফেরত দিন cout<<"অ্যারের উপাদানের সংখ্যা লিখুন:"; cin>> number_of_elements; cout<>a[i]; } cout<<"\nসাব-অ্যারের সর্বাধিক যোগফল হল:"< 

আউটপুট

অ্যারের উপাদানের সংখ্যা লিখুন:5 1 এর উপাদানটি প্রবেশ করান:12 2 এর উপাদানটি প্রবেশ করান:45 3 এর উপাদানটি প্রবেশ করান:56 4 এর উপাদানটি প্রবেশ করান:48 5 এর উপাদানটি প্রবেশ করান:75 সাব-অ্যারের সর্বাধিক যোগফল হল:263 

  1. C++ এ বাইনারি ট্রিতে সর্বোচ্চ উল্লম্ব যোগফল খুঁজুন

  2. বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে একটি অ্যারের শীর্ষ উপাদান খুঁজে পেতে C++ প্রোগ্রাম

  3. বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে একটি অ্যারের ন্যূনতম উপাদান খুঁজে পেতে C++ প্রোগ্রাম

  4. বাইনারি অনুসন্ধান ব্যবহার করে একটি অ্যারেতে সর্বাধিক উপাদান খুঁজে পেতে C++ প্রোগ্রাম