व्यापार में, एक खरीदार क्रमशः सुबह और शाम शेयरों को खरीदता और बेचता है। यदि एक दिन में अधिकतम दो लेन-देन की अनुमति है। पहला लेनदेन पूरा होने के बाद ही दूसरा लेनदेन शुरू हो सकता है। यदि स्टॉक की कीमतें दी गई हैं, तो खरीदार द्वारा अर्जित अधिकतम लाभ ज्ञात कीजिए।
इनपुट और आउटपुट
<पूर्व>इनपुट:स्टॉक की कीमतों की एक सूची। {2, 30, 15, 10, 8, 25, 80}उत्पादन:यहाँ कुल लाभ 100 है। मूल्य 2 पर खरीदने और मूल्य 30 पर बेचने के रूप में लाभ 28। फिर मूल्य 8 पर खरीदें और इसे फिर से कीमत पर बेचें 80.तो लाभ 72. तो कुल लाभ 28 + 72 =100एल्गोरिदम
findMaxProfit(pricelist, n)
इनपुट - सभी कीमतों की सूची, सूची में मदों की संख्या।
आउटपुट - अधिकतम लाभ।
आकार n के लाभ सरणी को परिभाषित करना शुरू करें और 0 maxPrice भरें:=pricelist[n-1]//अंतिम आइटम i के लिए चुना गया है:=n-2 से 0 तक, अगर pricelist[i]> maxPrice करें, तो करें maxPrice:=pricelist[i] लाभ [i]:=अधिकतम लाभ [i+1] और maxProfit – pricelist[i] किया गया minProce:=pricelist[0] // पहला आइटम i के लिए चुना गया है:=1 से n- 1, करें यदि pricelist[i]उदाहरण
#includeनेमस्पेस का उपयोग करना std;int max(int a, int b) {रिटर्न (a>b)?a:b;}int findMaxProfit(int priceList[], int n) { int * लाभ =नया इंट [एन]; for (int i=0; i =0;i--) {if (priceList[i]> maxPrice) maxPrice =priceList[i]; लाभ [i] =अधिकतम (लाभ [i + 1], अधिकतम मूल्य - मूल्य सूची [i]); // maxPrice में बेचने के लिए लाभ का पता लगाएं} int minPrice =priceList[0]; // मूल्य सूची का पहला आइटम न्यूनतम के लिए (int i=1; i आउटपुट
अधिकतम लाभ =100