मान लीजिए एक शहर है, और शहर में प्रत्येक घर में एक निश्चित राशि है। एक डाकू एक ही रात में पैसे लूटना चाहता है। शहर में एक सुरक्षा प्रणाली है, कि यदि एक ही रात में दो लगातार घरों में सेंध लगाई जाती है, तो यह स्वचालित रूप से पुलिस को बुला लेगा। इसलिए हमें यह पता लगाना है कि डाकू अधिकतम कितनी राशि लूट सकता है?
एक सरणी प्रदान की जाती है, इंडेक्स i पर, A[i] वह राशि है जो i-वें घर में मौजूद है। मान लीजिए सरणी है: A = [2, 7, 10, 3, 1], तो परिणाम 13 होगा। अधिकतम है घर1 से लेना (मान 2), घर3 से (मान 10), और घर5 से (मान 1), तो कुल 13 है।
हल करने के चरण
- prev1 := 0 और prev2 = 0 लें
- i = 0 से A की लंबाई तक
- temp := prev1
- prev1 := prev2 + A[i] और prev1 का अधिकतम
- prev2 = temp
- prev1 वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
prev2 = 0
prev1 = 0
for i in range(0,len(nums)):
temp = prev1
prev1 = max(prev2+nums[i],prev1)
prev2 = temp
return prev1
ob1 = Solution()
print(ob1.rob([2,7,10,3,1]))
इनपुट
nums = [2,7,10,3,1]
आउटपुट
13