কম্পিউটার

পাইথনে কাজের সময় নির্ধারণ করে সর্বাধিক লাভ পাওয়ার প্রোগ্রাম


ধরুন আমাদের অন্তরের একটি তালিকা আছে যেখানে প্রতিটি ব্যবধানে তিনটি মান রয়েছে [শুরু, শেষ, লাভ]। আমরা একবারে একটি মাত্র কাজ করতে পারি, আমাদের সবচেয়ে বেশি মুনাফা খুঁজে বের করতে হবে।

সুতরাং, ইনপুট যদি অন্তরের মত হয় =[[1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]], তাহলে আউটপুট হবে 350, যেহেতু আমরা এই দুটি বিরতি নিতে পারি [1, 2, 100] এবং [2, 100, 250]

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

  • d :=একটি খালি মানচিত্র যাতে মান হিসাবে তালিকা রয়েছে
  • n :=0
  • ব্যবধানে প্রতিটি (শুরু, শেষ, লাভ) জন্য, করুন
    • যদি শেষ> n হয়, তাহলে
      • n :=শেষ
  • d[শেষ] এ জোড়া (শুরু, শেষ) ঢোকান
  • A :=n + 1 আকারের একটি তালিকা এবং 0 দিয়ে পূরণ করুন
  • পরিসীমা 0 থেকে A এর আকারের জন্য, করুন
    • যদি শেষ d হয়, তাহলে
      • প্রতিটি (শুরু, লাভ) জোড়ার জন্য d[শেষ], করুন
        • A[শেষ] :=সর্বাধিক A[শেষ], (A[শুরু] + লাভ) এবং A[শেষ - 1]
    • অন্যথায়,
      • A[শেষ] :=A[শেষ - 1]
  • A এর শেষ মান ফেরত দিন

উদাহরণ (পাইথন)

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

সংগ্রহ থেকে আমদানি ডিফল্টডিক্টক্লাস সমাধান:def solve(self, intervals):d =defaultdict(list) n =0 শুরু, শেষ, বিরতিতে লাভের জন্য:যদি শেষ> n:n =শেষ d[end].append( [শুরু, লাভ]) A =[0 এর জন্য i রেঞ্জে (n + 1)] পরিসরের শেষের জন্য (len(A)):যদি শেষ হয় d:শুরুর জন্য, d[শেষে] লাভ:A[শেষ] =সর্বোচ্চ(A[শেষ], A[শুরু] + লাভ, A[শেষ - 1]) অন্য:A[শেষ] =A[শেষ - 1] ফেরত A[-1]ob =সমাধান()ব্যবধান =[[ 1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]]প্রিন্ট(ob.solve(intervals))

ইনপুট

[[1, 2, 100],[3, 5, 40], [6, 19, 150],[2, 100, 250]] 

আউটপুট

350

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

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

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

  4. আমি কিভাবে একটি পাইথন প্রোগ্রামের কার্যকর করার সময় পেতে পারি?