কম্পিউটার

সর্বোচ্চ খণ্ডগুলি সি++ এ সাজানো


ধরুন আমরা একটি অ্যারে অ্যারে দিয়েছি যা [0, 1, ..., arr.length - 1]-এর পারমুটেশন, আমাদের অ্যারেটিকে কিছু সংখ্যক "খণ্ডে বিভক্ত করতে হবে " অথবা পার্টিশন, এবং পৃথকভাবে প্রতিটি পার্টিশন সাজান। সুতরাং তাদের একত্রিত করার পরে, ফলাফলটি সাজানো অ্যারে হবে। সুতরাং যদি অ্যারেটি [1,0,2,3,4] এর মত হয়, তাহলে আউটপুট হবে 4, যেহেতু আমরা [1, 0] এবং [2,3,4] এর মতো দুটি পার্টিশনে বিভক্ত হতে পারি, তবে এটি করতে পারে এছাড়াও সত্য যে [1, 0], [2], [3], [4]। সুতরাং এটি সম্ভব সর্বোচ্চ সংখ্যা, তাই আউটপুট হল 4।

আমরা কত সংখ্যক খণ্ড তৈরি করতে পারতাম?

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • উত্তর :=0, minVal :=inf, n :=arr এর আকার, এবং maxVal :=-inf
  • আমি 0 থেকে n
      পরিসরে
    • maxVal :=arr[i] এবং maxVal এর সর্বোচ্চ
    • যদি maxVal =i, তাহলে উত্তর 1 দ্বারা বাড়ান
  • উত্তর ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include নামস্পেস ব্যবহার করে int minVal =INT_MAX; int n =arr.size(); int maxVal =INT_MIN; for(int i =0; i  v ={1,0,2,3,4}; cout <<(ob.maxChunksToSorted(v));}

ইনপুট

<প্রে>[1,0,2,3,4]

আউটপুট

4

  1. C++ এ একটি লাইনে সর্বোচ্চ পয়েন্ট

  2. C++ এ ইনলাইন ফাংশন

  3. সর্বোচ্চ হিপ বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. পাইথনে সাজানো অ্যারে তৈরি করতে সর্বাধিক খণ্ডগুলি খুঁজে বের করার প্রোগ্রাম