C ++一个计算最大利润的程序

时间:2015-09-30 13:07:22

标签: c++

该程序接受商品的日常价格输入,然后计算最大利润。价格清单以-1结尾。 例如,如果我输入20,30,10,50,-1,则表示第一天的商品是20美元,第二天是30美元等。最大的利润产量是40美元,因为我可以在第三天以10美元的价格购买它,并在第四天以50美元的价格出售。

这是一项学校作业,老师不允许我使用数组。 现在我的程序很好,除非在这种情况下,例如 如果我输入20 30 10,最大的利润将是$(30-10)我怎么能修复它所以如果不能存储最大数字之后的数字,例如10作为最小数量?或任何其他代码,以实现我的计划的目的?

#include<iostream>
using namespace std;
int main() {
    int c(0), r(0), n1(0), min(0), max(0), l(0), s(0);

    cout << "Please enter the prices: ";

    while (n1 != -1) {
        cin >> n1;
        if (min == 0 && n1>0)
        {
            min = n1;
        }
        c++;
        if (n1 <= 0 && n1 != -1) { cout << "Invalid. Input again. Please make sure it's a positive number!" << endl; r++; }
        else {
            if (n1<min && n1 != -1) { min = n1; s++; }
            if (n1 >= max && (c - r)>(s + 1)) { max = n1; l = c; }
            cout << c << s + 1 << l << endl;
        }
    }
    cout << max << min;
    cout << endl << "Largest amount earned: " << (max - min) << endl;
    return 0;
}

1 个答案:

答案 0 :(得分:3)

您可以使用现在而不是将来的最低价格来计算最大利润。

#include <iostream>

int main(void) {
    int lowestPrice = -1;
    int highestProfit = 0;
    int price, maxProfit;
    while (std::cin >> price) {
        if (price < 0) break;
        if (lowestPrice < 0 || price < lowestPrice) lowestPrice = price;
        maxProfit = price - lowestPrice;
        if (maxProfit > highestProfit) highestProfit = maxProfit;
    }
    std::cout << highestProfit << std::endl;
    return 0;
}