2406_86548294 2024-12-21 11:49 采纳率: 33.3%
浏览 22

1814. 卖苹果的最大利润

1814. 卖苹果的最大利润

问题描述
阿凡提批发了

m 斤苹果准备出售,批发价是

x 元/斤。假设他能知道未来

n 天每天苹果的市场单价,请问他在第几天出售利润最高(如果有多天都能使得他的利润最高,那么他会尽早卖出),最高利润是多少钱?

比如:假设阿凡提批发了
100
100 斤苹果,批发价是
5
5 元/斤;未来
8
8 天市场上每天苹果的单价是
4
4
6
6
5
5
3
3
1
1
5
5
6
6
5
5 ,那么第
2
2 天和第
7
7 天都是能让他利润最高的时间,他会选择第
2
2 天出售,能够获得
100
100 元的利润(利润 = 出售总价 - 批发总价)。

输入

1
1 行读入
3
3 个整数

m 、

x 、

n ;(

m 、

x 都是
1

1000

1∼1000之间的整数,

n是
5

100
5∼100之间的整数)


2
2 行有

n 个整数,用空格隔开,代表未来

n 天苹果的单价。(数据保证

n 天中一定会出现苹果的销售价>阿凡提的批发价的情况)

输出
输出
2
2 个整数,用空格隔开;


1
1 个整数代表阿凡提在第几天出售苹果,第
2
2 个整数代表阿凡提获得的总利润。

样例
输入复制
100 5 8
4 6 5 3 1 5 6 5
输出复制
2 100

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    以下是使用 C++ 编写的解决这个问题的代码:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        int m, x, n; // m斤苹果,批发价x元/斤,未来n天的市场单价
        cin >> m >> x >> n;
        vector<int> prices(n); // 存储未来n天的市场单价
        for (int i = 0; i < n; ++i) {
            cin >> prices[i];
        }
        int maxProfit = -1; // 最大利润初始化为-1,表示未找到有效的销售日期和利润
        int sellDay = 0; // 销售日期初始化为第0天(无意义)
        for (int i = 0; i < n; ++i) { // 遍历每一天的市场单价,计算利润并更新最大利润和销售日期
            int profit = (prices[i] - x) * m; // 计算当天的利润
            if (profit > maxProfit) { // 如果当天的利润大于当前的最大利润,则更新最大利润和销售日期
                maxProfit = profit;
                sellDay = i + 1; // 注意,这里要将销售日期转换为实际的日期(加1)
            }
        }
        cout << sellDay << " " << maxProfit << endl; // 输出销售日期和最大利润
        return 0;
    }
    

    这段代码首先读取输入的苹果数量(m)、批发价(x)和未来n天的市场单价。然后使用一个循环遍历每一天的市场单价,计算每天的利润并与当前的最大利润进行比较。如果当天的利润大于当前的最大利润,则更新最大利润和销售日期。最后输出销售日期和最大利润。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月21日