কম্পিউটার

পাইথন ব্যবহার করে m bouquets তৈরি করার জন্য ন্যূনতম দিনের সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যা নামক পূর্ণসংখ্যা সহ একটি অ্যারে আছে, আমাদের আরও দুটি মান m এবং k আছে। এখন, আমরা m bouquets করতে হবে. একটি তোড়া তৈরি করতে আমাদের বাগান থেকে k সংলগ্ন ফুলের প্রয়োজন। এখানে বাগানে n বিভিন্ন ফুল রয়েছে, ith ফুলটি প্রস্ফুটিত হবে [i] দিনে। প্রতিটি ফুল শুধুমাত্র একটি bouquets ভিতরে ব্যবহার করা যেতে পারে. আমরা বাগান থেকে m bouquets করতে অপেক্ষা করতে হবে দিনের ন্যূনতম সংখ্যা খুঁজে বের করতে হবে. যদি আমরা m bouquets তৈরি করতে না পারি, তাহলে -1 ফেরত দিন।

সুতরাং, যদি ইনপুটটি bloomDay =[5,5,5,5,10,5,5] m =2 k =3 এর মত হয়, তাহলে আউটপুট হবে 10 কারণ আমাদের 2 (m =2) bouquets প্রয়োজন এবং প্রতিটি 3টি ফুল আছে।

  • 5 তম দিনের পর:[x, x, x, x, _, x, x], আমরা প্রথম তিনটি ফুলের একটি তোড়া বানাতে পারি, কিন্তু আরেকটি তোড়া বানাতে পারি না

  • 10 দিনের পর:[x, x, x, x, x, x, x], এখন আমরা বিভিন্ন উপায়ে দুটি তোড়া তৈরি করতে পারি।

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

  • n :=ব্লুমডে এর আকার

  • যদি m * k> n হয়, তাহলে

    • রিটার্ন -1

  • সম্ভাব্য একটি ফাংশন সংজ্ঞায়িত করুন()। এটি x

    লাগবে
  • গণনা :=0, তোড়া :=0

  • ব্লুমডে প্রতিটি ডি এর জন্য, করুন

    • যদি d <=x, তাহলে

      • গণনা :=গণনা + 1

      • যদি গণনা k এর সমান হয়, তাহলে

        • bouquets :=bouquets + 1

        • গণনা :=0

    • অন্যথায়,

      • গণনা :=0

  • bouquets>=m, অন্যথায় মিথ্যা

    হলে true ফেরত দিন
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -

  • বাম :=0, ডানে :=1 + সর্বাধিক ব্লুমডে

  • যখন বামে <ডানে, কর

    • মধ্য :=(বাম + ডান) /2

    • যদি সম্ভব (মাঝ) সত্য হয়, তাহলে

      • ডান :=মধ্য

    • অন্যথায়,

      • বাম :=মধ্য + 1

  • যদি সম্ভব (বামে) সত্য হয়, তাহলে

    • বাম দিকে ফিরে যান

  • অন্যথায় বাম + 1

    ফিরে যান

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

উদাহরণ

def সমাধান(bloomDay, m, k):n =len(bloomDay) if m * k> n:রিটার্ন -1 def সম্ভব x:গণনা +=1 যদি গণনা ==k:তোড়া +=1 গণনা =0 অন্য:গণনা =0 ফেরত তোড়া>=m বাম, ডান =0, সর্বোচ্চ (ব্লুমডে) + 1 যখন বামে <ডান:মধ্য =(বাম + ডান)//2 যদি সম্ভব হয় (মাঝে):ডান =মাঝামাঝি অন্য:বাম =মধ্য + 1 যদি সম্ভব হয় (বাম):অন্য বামে ফিরে যান:বাম দিকে ফিরে যান + 1ব্লুমডে =[5,5,5,5,10,5, 5]m =2k =3প্রিন্ট(সল্ভ(ব্লুমডে, মি, কে))

ইনপুট

<প্রে>[5,5,5,5,10,5,5], 2, 3

আউটপুট

10

  1. পাইথন ব্যবহার করে সমস্ত নোডে পৌঁছানোর জন্য ন্যূনতম সংখ্যক শীর্ষবিন্দু খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে B-এর আগে A-কে তৈরি করতে ন্যূনতম সংখ্যক অক্ষর মুছে ফেলার জন্য প্রোগ্রাম

  3. পাইথনে এক নম্বর থেকে অন্য নম্বর তৈরি করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে একটি স্ট্রিং সাবস্ট্রিং অন্যটির জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম