मान लीजिए कि एक शहर है, और शहर के प्रत्येक घर की एक निश्चित राशि है। एक लुटेरा एक ही रात में पैसे लूटना चाहता है। शहर में एक ही सुरक्षा व्यवस्था है, जैसे कि एक ही रात में लगातार दो घर टूट जाते हैं, तो यह स्वचालित रूप से पुलिस को बुलाएगा। तो हमें यह पता लगाना होगा कि लुटेरा अधिकतम कितनी राशि लूट सकता है?
एक सरणी प्रदान की जाती है, सूचकांक i पर, ए [i] वह राशि है जो आई-वें घर में मौजूद है। मान लीजिए कि सरणी इस प्रकार है:ए =[2, 7, 10, 3, 1], तो परिणाम 13 होगा। अधिकतम घर 1 (मान 2) से, घर 3 (मान 10), और घर 5 (मान 1) से लिया जा रहा है। ), तो कुल 13
. हैइसे हल करने के लिए, हम इस दृष्टिकोण का पालन करेंगे -
- पिछला लें:=0 और पिछला2 =0
- i =0 से A की लंबाई तक -
- अस्थायी:=पिछला1
- पिछला1 :=अधिकतम पिछला2 + ए[i] और पिछला1
- पिछला2 =अस्थायी
- वापसी पिछला1
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
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