मान लीजिए कि हमारे पास एक सूची ग्राहक और एक अन्य सूची मूड है, ये दोनों समान लंबाई के हैं, हमारे पास एक और पूर्णांक k है। अब प्रत्येक मिनट पर, ग्राहक [i] स्टोर पर लोगों की संख्या आती है और जब मूड [i] =1 होता है, तो यह इंगित करता है कि ग्राहक खुश हैं और जब मूड [i] =0, तो वे दुखी होते हैं। हम k मूड के आकार की एक सबलिस्ट को 1s पर सेट कर सकते हैं, अंत में हमें उन लोगों की अधिकतम संख्या ढूंढनी होगी जिन्हें हम खुश कर सकते हैं।
इसलिए, यदि इनपुट ग्राहकों की तरह है =[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]
- घ :=0
- के लिए k से n की श्रेणी में, करते हैं
- d :=अधिकतम d और (a[i] - a[i - k])
- रिटर्न एस + डी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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