मान लीजिए हमारे पास एक सरणी prices है जहां prices[i] दुकान में iवें आइटम की कीमत दर्शाता है। एक विशेष ऑफर चल रहा है, यदि हम iवां आइटम खरीदते हैं, तो हमें prices[j] के बराबर छूट मिलेगी जहां j न्यूनतम इंडेक्स है जैसे कि j > i और jवें आइटम की कीमत iवें आइटम की कीमत से कम या बराबर है (यानी prices[j] <= prices[i]), अन्यथा, हमें कोई छूट नहीं मिलेगी। हमें एक सरणी ढूंढनी है जहां iवां तत्व वह अंतिम कीमत है जो हम दुकान के iवें आइटम के लिए विशेष छूट को ध्यान में रखते हुए चुकाएंगे।
उदाहरण के लिए, यदि इनपुट prices = [16,8,12,4,6] है, तो आउटपुट [8, 4, 8, 4, 6] होगा, क्योंकि आइटम 0 की कीमत 16 है, तो हमें prices[1]=8 के बराबर छूट मिलेगी, फिर अंतिम कीमत 16 - 8 = 8 होगी। आइटम 1 के लिए कीमत 8 है हमें prices[3]=4 के बराबर छूट मिलेगी, तो अंतिम कीमत 8 - 4 = 4 होगी। आइटम 2 के लिए कीमत 12 है और हमें prices[3] = 4 के बराबर छूट मिलेगी, इसलिए अंतिम कीमत 12 - 4 = 8 होगी। और आइटम 3 और 4 के लिए हमें कोई छूट नहीं मिलेगी।
समाधान के चरण
iको 0 सेpricesके आकार तक लूप चलाएंjकोi+1सेpricesके आकार तक लूप चलाएं- यदि
prices[i] >= prices[j], तोprices[i] := prices[i] - prices[j]और लूप से बाहर निकलें - अन्यथा,
j := j + 1 pricesवापस करें
उदाहरण (पायथन)
def solve(prices):
for i in range(len(prices)):
for j in range(i+1, len(prices)):
if prices[i] >= prices[j]:
prices[i] -= prices[j]
break
else:
j += 1
return prices
prices = [16,8,12,4,6]
print(solve(prices))
इनपुट
[16,8,12,4,6]
आउटपुट
[8, 4, 8, 4, 6]