Наш профессор хочет, чтобы мы написали некоторый код, чтобы немного рассчитать о финансовом инструменте, купить дешево и продать высокую цену. Цены меняются со временем. например, ввод {1,2,4}, поэтому мы можем купить 1 и продать как 2, а купить 2 продать 4. так что выход должен быть 1 + 2 = 3. И если входные данные {4,2,1}, мы не можем покупать низко и продавать высоко. поэтому выход должен быть 0. и вот мой код.В моем коде на C++ есть странная ошибка
#include<iostream>
#include<vector>
using namespace std;
int getMaxProfit(vector<int> &prices)
{
int p;
int n=0;
vector<int> profits;
if(prices.size()==1)
{
return 0;
}
for(int i=0; i<prices.size();i++)
{
if (prices[i]<prices[i+1])
{
p=prices[i+1]-prices[i];
profits.push_back(p);
}
}
for(int i=0; i<profits.size();i++)
{
n=n+profits[i];
}
return n;
}
int main()
{
vector<int> prices = {1,2,4};
cout<<getMaxProfit(prices);
return 0;
}
Это работает очень хорошо, когда на моем входе всего 4 или меньше значения. Однако, если имеется более 4 значений, например {1,1,2,3,4}. Я получу неправильный ответ. Я не могу понять, что в этом плохого.
'если (цены [I] <цены [я + 1])' доступы вне границ массива на последней итерации –
@ M.M спасибо за Ваш ответ! Я узнаю, что не так –