मान लीजिए कि हमारे पास कीमतों नामक एक सरणी है जहां कीमतें [i] एक दुकान में ith आइटम की कीमत का प्रतिनिधित्व करती हैं। एक विशेष पेशकश चल रही है, अगर हम ith आइटम खरीदते हैं, तो हमें कीमतों के बराबर छूट मिलेगी [j] जहां j न्यूनतम सूचकांक है जैसे कि j> i और jth आइटम की कीमत कम या कीमत के समान है आइटम (यानी कीमतें [जे] <=कीमतें [i]), अन्यथा, हमें कोई छूट नहीं मिलेगी। हमें एक सरणी ढूंढनी होगी जहां ith तत्व अंतिम कीमत है जिसे हम विशेष छूट पर विचार करते हुए दुकान के ith आइटम के लिए भुगतान करेंगे।
इसलिए, यदि इनपुट कीमतों की तरह है =[16,8,12,4,6], तो आउटपुट [8, 4, 8, 4, 6] होगा, क्योंकि आइटम 0 की कीमत 16 है, इसलिए हमें एक मिलेगा कीमतों के बराबर छूट [1] =8, फिर, अंतिम कीमत 8 - 4 =4 होगी। आइटम 1 के लिए कीमत [1] 8 है, हमें कीमतों के बराबर छूट मिलेगी [3] =2, इसलिए, अंतिम कीमत हम भुगतान करेंगे 8 - 4 =4 है। मूल्य के साथ आइटम 2 के लिए [2] 12 है और हमें कीमतों के समान छूट मूल्य मिलेगा [3] =4, इसलिए, हम जो अंतिम कीमत चुकाएंगे वह 12 - 4 =है 8. और आइटम 3 और 4 के लिए हमें कोई छूट नहीं मिलेगी।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मेरे लिए 0 से लेकर कीमतों के आकार के बीच, करें
-
j के लिए i+1 से लेकर कीमतों के आकार तक, करें
-
अगर कीमतें[i]>=कीमतें[j], तो
-
कीमतें[i] :=कीमतें[i] - कीमतें[j]
-
लूप से बाहर आएं
-
-
अन्यथा,
-
जे:=जे + 1
-
-
-
-
वापसी मूल्य
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
डीईएफ़ सॉल्व (कीमतें):मेरे लिए रेंज में (लेन (कीमत)):रेंज में जे के लिए (i + 1, लेन (कीमत)):अगर (कीमतें [i]> =कीमतें [जे]):कीमतें [i]-=कीमतें[j] और तोड़ें:j+=1 वापसी की कीमतेंकीमतें =[16,8,12,4,6]प्रिंट (समाधान (कीमत))इनपुट
[16,8,12,4,6]आउटपुट
[8, 4, 8, 4, 6]