C++ 在不同的日期从买入/卖出中找到最大利润

C++ 在不同的日期从买入/卖出中找到最大利润,c++,C++,好的,这个问题在一个数组中给出5个值。它们代表了你买卖股票的价值。不买不卖。因此,第一个价值是购买。你需要找到你得到的最大或最高利润,即使它是负数(所以-1000比-10000多)。您可以假设有适当的主函数和头。以下代码是我如何解决它的: int solution(prices[]) { int N = 5; //assumption is can only buy sell for 5 days so prices = [0-4] int difference; int max_pro

好的,这个问题在一个数组中给出5个值。它们代表了你买卖股票的价值。不买不卖。因此,第一个价值是购买。你需要找到你得到的最大或最高利润,即使它是负数(所以-1000比-10000多)。您可以假设有适当的主函数和头。以下代码是我如何解决它的:

int solution(prices[]) {

int N = 5;  //assumption is can only buy sell for 5 days so prices = [0-4]


int difference;
int max_profit = -100000000000;

for (int p = 0; p < N; p++)
{
    for (int q = p + 1; q < N; q++)
    {
        difference = prices[q] - prices[p];
        if (difference > max_profit)
        {
            max_profit = difference;
        }
    }
}

return max_profit;
int解决方案(价格[]){
int N=5;//假设只能在5天内买卖,因此价格=[0-4]
智力差异;
int最大利润=-10000000000;
for(int p=0;p最大利润)
{
最大利润=差额;
}
}
}
回报最大利润;
我希望能够解决这个问题,而不必包括max_proft=-10000000000。bc有可能有人在买卖中损失超过这个。有什么想法吗

我希望能够解决它,而不必包括
max\u proft=-10000000000

嗯,你需要有一个最小的起始值。那么你关心的是什么呢


您可以获得的最低起始值是
std::numeric_limits::lowest();

如果您想要
max_profit
的最低值,那么首先使用:

#include <limits>

//...

int max_profit = std::numeric_limits<int>::lowest();
#包括
//...
int max_profice=std::numeric_limits::lowest();

如果有人在股票交易中损失了比这更多的钱,那么他们将面临一些严重的问题…

你可以使用
int max\u profit=std::numeric\u limits::lowest();
取而代之。有什么想法吗?用一个较小的数字。然后想想它需要有多小才能对你有用。从第一个数据集元素中提取初始值。
int max_price=prices[1]-prices[0]
如果它以后没有被篡夺,那就顺其自然吧,如果是的话,再假设
N>=2
始终如此。请注意,您选择的值(-100000)可能超出了
int
s的范围。我只是一个初学者,还没有学过。用初学者的技能有什么办法吗?哈哈,是的,我知道它非常重要,但不是不可能,也许现在但将来谁知道呢。还有什么可以做的
int max\u profit=std::numeric\u limits::lowest()有初学者技能吗?我刚开始学习c++
std::numeric_limits::lowest()
只返回一个
int
所能持有的最小值,即
-2147483648
。使用它除了简单地通过上面的设置将
最大利润
设置为这个值之外,没有更多的东西了。好吧,用一个32位
int
和一个…@Bob\uuu>是真的,但我希望,在一次股票交易中损失这个金额几乎是不可能的 ;)