কম্পিউটার

C++ এ একটি সংখ্যায় k ব্রেকপয়েন্ট রাখার পর সর্বোচ্চ সেগমেন্টের মান


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

এখানে, স্ট্রিং দ্বারা প্রদত্ত সংখ্যাটিতে k ব্রেকপয়েন্ট বসানোর পরে আমাদের সর্বাধিক সংখ্যাটি তৈরি করতে হবে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

ইনপুট − স্ট্রিং =“45972”, k =3

আউটপুট − 97

ব্যাখ্যা

All possible number is:
45    9    7    2
4    59    7    2
4    5    97    2
4    5    9    72
From all 97 is the largest number.

এই সমস্যা সমাধানের জন্য, আমরা স্লাইডিং উইন্ডো ব্যবহার করব। এখানে, উইন্ডোর আকার সমান হবে (স্ট্রিংয়ের দৈর্ঘ্য - কে) অর্থাৎ এই আকারের সর্বাধিক সংখ্যা হবে। আমরা স্লাইডিং উইন্ডো কৌশল ব্যবহার করে প্রদত্ত আকারের সম্ভাব্য সমস্ত সংখ্যার সর্বোচ্চ সংখ্যাটি পরীক্ষা করব৷

উদাহরণ

একটি সংখ্যায় K ব্রেকপয়েন্ট বসানোর পরে সর্বাধিক সেগমেন্ট মান খুঁজে বের করার প্রোগ্রাম −

#include <bits/stdc++.h>
using namespace std;
int findMaxSegmentWithKbreaks(string &s, int k) {
   int window = s.length() - k;
   int MaxNumber = 0;
   for (int i=0; i<window; i++)
   MaxNumber = MaxNumber * 10 + (s[i] - '0');
   int slWindow = pow(10, window-1);
   int value = MaxNumber;
   for (int i = 1; i <= (s.length() - window); i++) {
      value = value - (s[i-1]- '0')*slWindow;
      value = value*10 + (s[i+window-1]- '0');
      MaxNumber = max(MaxNumber, value);
   }
   return MaxNumber;
}
int main() {
   string s = "45972";
   int k = 3;
   cout<<"Maximum segment value after putting "<<k<<" break points in a number = "<<findMaxSegmentWithKbreaks(s, k);
   return 0;
}

আউটপুট

Maximum segment value after putting 3 breakpoints in a number = 97

  1. C++ এ সর্বোচ্চ মান পেতে একটি বাইনারি নম্বর থেকে এক বিট সরান

  2. সর্বোচ্চ গড় মান সহ C++ পথ

  3. C++ পাথের দৈর্ঘ্য সর্বাধিক সংখ্যক বাঁক রয়েছে

  4. সর্বাধিক সংখ্যা যা C++ এ N সেগমেন্ট ব্যবহার করে সেভেন সেগমেন্ট ডিসপ্লেতে প্রদর্শিত হতে পারে