L2-003 月饼

本文介绍了一个使用C++编写的程序,该程序通过计算商品的单价来确定最大收益。程序首先读取商品数量和预算,然后输入每个商品的库存和总价,计算并返回在预算范围内能获得的最大总收益。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


/* 此种题目出了数组下标定义为整形,其他一律定义为float,不要相信题目 */

#include <iostream>
#include <string>
#include <cstdio>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int Max_Price(float price[], int n)
{
    int maxpos(0);
    float maxprice = price[0];
    for (int i = 1; i < n; ++i)
    {
        if (maxprice < price[i])
        {
            maxprice = price[i];
            maxpos = i;
        }
    }
    return maxpos;
}

int main()
{
    int N, D;
    cin >> N >> D;
    float storage[N] = {0}; // 题目说整形是在挖坑,一定要定义为float,不然测试点2失败
    for (int i = 0; i < N; ++i)
    {
        cin >> storage[i];
    }

    float price[N] = {0};
    for (int i = 0; i < N; ++i)
    {
        float total;
        cin >> total;
        price[i] = total / storage[i];
    }

    float sum(0);
    while (D > 0)   // 当D大于库存量时也可以计算
    {
        int maxpos = Max_Price(price, N);
        if (D >= storage[maxpos])
        {
            sum += (storage[maxpos] * price[maxpos]);
        } else
        {
            sum += (D * price[maxpos]);
        }
        price[maxpos] = 0;  // 将已经卖出的单价定为0
        D -= storage[maxpos];
    }
    printf("%.2f", sum);

    return 0;

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值