ধরুন একটি শহর আছে, এবং শহরের প্রতিটি বাড়ির একটি নির্দিষ্ট পরিমাণ রয়েছে৷ এক রাতে এক ডাকাত টাকা ছিনতাই করতে চায়। শহরের একটি নিরাপত্তা ব্যবস্থা আছে, তা হল একই রাতে পরপর দুটি বাড়ি ভাঙলে তা স্বয়ংক্রিয়ভাবে পুলিশকে ডাকবে। তাই আমাদের খুঁজে বের করতে হবে কিভাবে ডাকাত সর্বোচ্চ পরিমাণ ডাকাতি করতে পারে?
একটি অ্যারে প্রদান করা হয়েছে, সূচক i এ, A[i] হল সেই পরিমাণ যা i-th হাউসে রয়েছে। ধরুন অ্যারেটি এরকম:A =[2, 7, 10, 3, 1], তাহলে ফলাফলটি 13 হবে। সর্বাধিক হচ্ছে house1 (মান 2), house3 (মান 10) থেকে এবং house5 (মান 1) থেকে ), তাই মোট 13
এটি সমাধান করার জন্য, আমরা এই পদ্ধতি অনুসরণ করব -
- prev1 :=0 এবং prev2 =0 নিন
- এর জন্য i =0 থেকে A −
- এর দৈর্ঘ্য
- temp :=prev1
- prev1 :=prev2 + A[i] এবং prev1 এর সর্বাধিক
- prev2 =temp
- আগের ১ ফেরত
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
শ্রেণির সমাধান(অবজেক্ট):def rob(self, nums):""" :type nums:List[int] :rtype:int """ prev2 =0 prev1 =0 রেঞ্জে i এর জন্য (0,len( সংখ্যা)):temp =prev1 prev1 =max(prev2+nums[i],prev1) prev2 =temp রিটার্ন prev1ob1 =Solution()print(ob1.rob([2,7,10,3,1]))পূর্বে>ইনপুট
সংখ্যা =[2,7,10,3,1]আউটপুট
13