In: Computer Science
/** * FUNCTION SIGNATURE: * PURPOSE: * PARAMETER: * RETURN VALUE: * Write the following function taking in an integer vector (vector &prices) consisting of all prices, in chronological order, for an hypothetical instrument. Your function recommends the maximum profit an investor can make by placing AT MOST one buy and one sell order in the time slice represented by your input vector. Remember BUY LOW, SELL HIGH
#include
using
namespace
std;
int
maxProfit(
int
price[],
int
start,
int
end)
{
// If the stocks
can't be bought
if
(end
<= start)
return
0;
// Initialise the
profit
int
profit = 0;
// The day at which
the stock
// must be
bought
for
(
int
i = start; i < end; i++)
{
//
The day at which the
//
stock must be sold
for
(
int
j = i + 1; j <= end; j++)
{
//
If byuing the stock at ith day and
//
selling it at jth day is profitable
if
(price[j] > price[i]) {
//
Update the current profit
int
curr_profit = price[j] - price[i]
+
maxProfit(price, start, i - 1)
+
maxProfit(price, j + 1, end);
//
Update the maximum profit so far
profit
= max(profit, curr_profit);
}
}
}
return
profit;
}
// Driver code
int
main()
{
int
price[] = { 100, 180, 260, 310,
40,
535, 695 };
int
n
=
sizeof
(price) /
sizeof
(price[0]);
cout <<
maxProfit(price, 0, n - 1);
return
0;
}