কম্পিউটার

আমরা পাইথনে খুশি করতে পারি এমন সর্বাধিক সংখ্যক লোককে খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি তালিকা গ্রাহক এবং আরেকটি তালিকার মুড আছে, এই দুটি একই দৈর্ঘ্যের, আমাদের আরেকটি পূর্ণসংখ্যা k আছে। এখন প্রতি মিনিটে i, গ্রাহক[i] সংখ্যক লোক দোকানে আসে এবং যখন মেজাজ[i] =1 হয়, এটি নির্দেশ করে যে গ্রাহকরা খুশি এবং যখন মেজাজ [i] =0, তখন তারা দুঃখিত। আমরা 1s-এ মেজাজের k আকারের একটি সাবলিস্ট সেট করতে পারি, অবশেষে আমাদেরকে খুশি করতে পারি এমন সর্বাধিক সংখ্যক লোককে খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি গ্রাহকদের মত হয় =[2, 3, 6, 6, 3] মুড =[1, 1, 0, 0, 0] k =2, তাহলে আউটপুট হবে 17 কারণ যদি আমরা মুড সেট করি[2] ] এবং মুড[3] থেকে 1, তাহলে মোট মুড হবে 2 + 3 + 6 + 6 =17 গ্রাহক খুশি৷

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

  • n :=মেজাজের আকার
  • a :=আকারের একটি তালিকা (n + 1) এবং 0 দিয়ে পূরণ করুন
  • s :=0
  • আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
    • a[i + 1] :=a[i]
    • যদি মেজাজ[i] অ-শূন্য হয়, তাহলে
      • s :=s + গ্রাহক[i]
    • অন্যথায়,
      • a[i + 1] :=a[i + 1] + গ্রাহক[i]
  • d :=0
  • আমি k থেকে n রেঞ্জের জন্য, কর
    • d :=সর্বাধিক d এবং (a[i] - a[i - k])
  • s + d ফেরত দিন

উদাহরণ

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

def solve(customers, mood, k):
   n = len(mood)
   a = [0] * (n + 1)
   s = 0
   for i in range(n):
      a[i + 1] = a[i]
      if mood[i]:
         s += customers[i]
      else:
         a[i + 1] += customers[i]
   d = 0
   for i in range(k, n + 1):
      d = max(d, a[i] - a[i - k])
   return s + d

customers = [2, 3, 6, 6, 3]
mood = [1, 1, 0, 0, 0]
k = 2
print(solve(customers, mood, k))

ইনপুট

[2, 3, 6, 6, 3], [1, 1, 0, 0, 0], 2

আউটপুট

17

  1. আমরা পাইথনে একটি বার্তা ডিকোড করতে পারি এমন কয়েকটি উপায় খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে আমরা সর্বাধিক সংখ্যক কয়েন সংগ্রহ করতে পারি তা খুঁজে বের করার প্রোগ্রাম

  3. স্ট্রিংয়ের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম আমরা তৈরি করতে পারি যেখানে 'a' 'a' বা 'b' হতে পারে এবং 'b' পাইথনে 'b' থাকে

  4. পাইথন প্রোগ্রাম সর্বোচ্চ তিনটি।